Почему HibernateTemplate не рекомендуется? - программирование
Подтвердить что ты не робот

Почему HibernateTemplate не рекомендуется?

Я был использован для getHibernateTemplate() в hibernate 3, и теперь я перехожу к Hibernate 4, и здесь я не нашел следующий класс:

org.springframework.orm.hibernate4.support.HibernateDaoSupport;

И здесь я читал о том, что не рекомендуется использовать

http://forum.springsource.org/showthread.php?117227-Missing-Hibernate-Classes-Interfaces-in-spring-orm-3.1.0.RC1

Может кто-нибудь объяснить мне почему? и в hibernate 4 теперь мне нужно выполнить всю задачу, например, совершить, закрыть, очистить транзакцию, которая автоматически управляется методом getHibernateTemplate()?

4b9b3361

Ответ 1

Поскольку его основная цель заключалась в том, чтобы связать сессию Hibernate с текущей транзакцией Spring, когда SessionFactory.getCurrentSession() не существовало. Поскольку он существует (и в течение длительного времени: использование HibenateTemplate не рекомендуется даже в пакете hibernate3), нет причин использовать этот Spring -специфический класс вместо использования SessionFactory.getCurrentSession(), чтобы получить сеанс, привязанный к текущему Spring.

Если вы используете Spring, вы должны использовать его декларативное управление транзакциями, что позволяет избежать открытия, фиксации, закрытия и очистки. Все это делается с помощью Spring автоматически:

@Autowired
private SessionFactory sessionFactory;

@Transactional
public void someMethod() {
    // get the session for the current transaction:
    Session session = sessionFactory.getCurrentSession();
    // do things with the session (queries, merges, persists, etc.)
}

В приведенном выше примере транзакция будет запущена (если она еще не запущена) перед вызовом метода; Сеанс будет создан Spring для транзакции, и сеанс будет автоматически очищен до совершения транзакции, который будет выполняться с помощью Spring автоматически при возврате метода.