Вместо того, чтобы пытаться удерживать Session
в вашем MyDAO
, вам, вероятно, лучше всего удерживать только SessionFactory
, и, когда необходимо, получить сессию, определив свой метод getSession
вMyDAO
как
public Session getSession() {
return sessionFactory.getCurrentSession();
}
или просто вообще не сохранять ничего, связанного с обработкой сеанса, в MyDao
и использовать
public Session getSession() {
return HibernateUtil.getSessionFactory().getCurrentSession();
}
Сеанс гибернации связан с конкретным потоком и закрытcommit, но метод фабрики сеансов getCurrentSession()
получает новый сеанс по мере необходимости, так что вам не нужно об этом беспокоиться.