Сеанс не должен быть компонентом SINGLETON, и он не должен совместно использоваться приложением. В многопользовательской среде каждый пользователь должен иметь свой собственный экземпляр сеанса. Широко используемый подход состоит в том, чтобы открыть сеанс, когда запрос инициирован, и закрыть его, когда запрос завершен. Spring облегчает этот подход, предоставляя OpenSessionInViewFilter
. Если у вас настроен этот фильтр, Spring позаботится о жизненном цикле сеанса, вам просто нужно получить к нему доступ, используя метод SessionFactoryUtils.getSession()
. Если вы используете Spring 3.1 и Hibernate 4.x, вы можете получить доступ к сеансу, используя sessionFactory.getCurrentSession()
.