Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Hibernate getCurrentSession


Автор: Key 13.5.2010, 09:46
Всем привет. У меня есть веб-сервис на Axis2, который работает через Хибернейт, использует всякие DAO и т.п.  Все стандартно. Создание SessionFactory вынесено в клас HibernateUtil, с которым я потом работаю. 
Сейчас сессиями я управляю сам, в каждом методе сервиса открываю сессию через sessionFactory.openSession(), запускаю транзакции и в конце закрываю сессию. Но это очень неудобно, в некоторых случаях можно забыть закрыть сессию, нужно передавать сессию в каждый ДАО вручную.
В Хибернейте есть привязаные к контексту сессии, нужно просто в конфиге выбрать hibernate.current_session_context_class (thread, jta или managed), а потом можно вызывать sessionFactory.getCurrentSession() и получать везде одну и ту же сессию, ненужно открывать сессию и закрывать. 
Есть ли проблемы с этими сессиями при очень большом количестве запросов? Как делают стандартно? Если я выберу hibernate.current_session_context_class=thread не будет ли проблем при большых нагрузках на сервис? Гдето в доке писало можно использовать локальный JTA провайдер и выбрать "jta" даже если распределенные транзакции не используються.
Что лучше выбрать?
Подскажите как правильно сделать управление сессиями?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)