2016-12-28 1 views
0

Я не очень практиковал Критерии и даже меньше использовал классы Spring, такие как HibernateDaoSupport.HibernateDaoSupport.getSession устарел: как заменить его, чтобы создать критерии?

Я унаследовал от проекта, где все Dao расширить HibernateDaoSupport, и все методы используют критерии такого путем:

final Criteria criteria = this.getSession().createCriteria(MyClass.class, "alias"); 

Поскольку я мигрировал проект под Maven и модернизировал версию Spring (3.0.4 - > 3.2.17), getSession устарел.

Какова наилучшая практика для реорганизации всего создания Критерий?

спасибо.

PS: сделал некоторые исследования, не нашел реальное решения момента ... так что простите меня, если это повторяющийся предмет или если существует тривиальный ответ

+0

is HibernateTemplate.execute подходит для ваших целей ?. Он получает HibernateCallback как параметр с помощью метода doInHibernate (Session) –

+0

Вы должны использовать SessionFactory вместо HibernateDaoSupport. В соответствии с: http://stackoverflow.com/questions/5104765/why-is-hibernatedaosupport-not-recommended http://stackoverflow.com/questions/11188633/hibernatedaosupport-in-hibernate-4-0 –

+0

поэтому замените this.getSession() this.getSessionFactory(). getCurrentSession()? coz я не хочу рефакторировать все приложение (слишком много кода строки) – MychaL

ответ

0

На практике, используя SessionFactory непосредственно является хорошей практикой.

После исследования это происходит из-за того, что весной 3 управление транзакциями теперь «оптимально». Но, к сожалению, в этом унаследованном проекте конфигурация Spring (1.x) ужасна, и невозможно использовать SessionFactory без рефакторинга.

В конце концов, мы выбрали HibernateTemplate вместо HibernateDaoSupport. Метод getSession для создания критериев не устарел.

Смежные вопросы