Область Hibernate Session в транзакциях JTA против Open-Session-In-View - PullRequest
2 голосов
/ 31 октября 2010

Правильно ли говорить, что использование JTA Транзакции с H ibernate контрастирует с использованием Open-Session-In-View в отношении объема сеанса?
Из того, что я смог собрать, область действия Session в транзакциях JTA представляет собой транзакцию (в основном основанную на этой ссылке ), в то время как в шаблоне Open-Session-In-View область действия сессии является наиболее востребованной, и вы можете есть несколько транзакций в нем.

Я прошу, во-первых, понять, а во-вторых, чтобы проверить, «Кто» отвечает за обработку сеанса при использовании JTA.
В настоящее время при использовании Open-Session-In-View у меня есть класс HibernateUtil, который обрабатывает открытие, получение и закрытие сеансов (через ThreadLocal<Session>).
Когда я переключусь на использование JTA, будет ли Hibernate обрабатывать вышеуказанные действия сеанса? (как производная от моего вызова userTransaction.begin, userTransaction.rollback)

Кстати, я спрашиваю о JTA, так как мне нужно координировать транзакции по Hibernate JMS и EHCache, так что это не общий вопрос с рекомендациями для использования в JTA.

Еффий

1 Ответ

0 голосов
/ 22 февраля 2011

Что ж, если вы используете JTA, то за транзакции отвечает менеджер JTA (обычно контейнер EJB3).

Как правило, используется та же старая модель с открытыми транзакциями, но сUserTransaction и, скажем, клиент SWING, возможно иметь длительные транзакции, охватывающие несколько запросов (хотя в целом это плохая практика).

Кстати, я спрашиваю о JTA, так какнеобходимо координировать транзакции в Hibernate JMS и EHCache, так что это не является общим вопросом о наилучших методах "let-use-JTA".

Удачи.Я обнаружил, что внешний менеджер транзакций (я использовал Atomikos) + Spring работал лучше для моих нужд, чем JBoss.

...