| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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" даже если распределенные транзакции не используються. Что лучше выбрать? Подскажите как правильно сделать управление сессиями? |