Они рекомендуют использовать поддержку транзакции JTA в Java среда EE.
Но как настроить JTA в Tomcat6 так, чтобы Были в спящем режиме, Сессия могла использовать его?
При запуске с версии 3.0.1 Будьте в спящем режиме, добавил
SessionFactory.getCurrentSession()
метод. Первоначально, это принятое использование транзакций JTA, где транзакция JTA, определенная и объем и контекст текущей сессии. Учитывая зрелость многочисленных автономных реализаций JTA TransactionManager, большинства, если не все, приложения должны использовать управление транзакциями JTA, развертываются ли они в контейнер J2EE. На основе этого основанные на JTA контекстные сессии - все, что необходимо использовать.
(Будьте в спящем режиме справочная документация | архитектура. Контекстные сессии)
Если вам нужна поддержка JTA в Tomcat, вам нужно использовать отдельный менеджер транзакций, например Atomikos, JOTM, Bitronix, SimpleJTA, JBossTS или GeronimoTM/Jencks. Но, честно говоря, если вы не собираетесь обрабатывать транзакции на нескольких ресурсах, то вы можете жить без JTA (а если вам действительно нужен JTA, используйте полноценный сервер приложений).
Если вы просто хотите использовать SessionFactory.getCurrentSession ()
, вы можете просто добавить следующие две строки в свой hibernate.cfg.xml :
<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="hibernate.current_session_context_class">thread</property>
Это даст вам уникальный сеанс для каждого потока. Поскольку запрос сервлета всегда обрабатывается в одном потоке (учитывая, что ваш код не порождает новые), сеанс будет существовать для всего запроса.
Не забудьте использовать фильтр, чтобы закрыть Сессию после запроса!