Область Hibernate Session в транзакциях JTA против Open-Session-In-View
Правильно ли говорить, что используя JTA
Сделки с Hibernate
контрастирует с использованием Open-Session-In-View
Что касается объема сессии?
Из того, что я смог собрать сессионный объем в JTA
Транзакции - это транзакция (в основном на основе этой ссылки), в то время как в Open-Session-In-View
шаблон является самой требовательной областью сеанса, и в ней может быть несколько транзакций.
Я прошу, во-первых, чтобы понять, а во-вторых, чтобы проверить, "Кто" отвечает за обработку сеанса при использовании JTA
,
В настоящее время при использовании Open-Session-In-View
, У меня есть HibernateUtil
класс, который обрабатывает открытие, получение и закрытие сессий (через ThreadLocal<Session>
).
Когда я переключусь на использование JTA
будут Hibernate
обрабатывать вышеуказанные действия сессии? (как производная от моего вызова userTransaction.begin,userTransaction.rollback)
Кстати, я спрашиваю о JTA
как мне нужно согласовать транзакцию через Hibernate
JMS
а также EHCache
так что это не общий вопрос передового опыта "Let's-Use-JTA".
Еффей
1 ответ
Что ж, если вы используете JTA, то за транзакции отвечает менеджер JTA (обычно контейнер EJB3).
Как правило, используется та же старая модель с открытыми транзакциями, но с UserTransaction
и, скажем, клиент SWING может иметь длительные транзакции, охватывающие несколько запросов (хотя в целом это плохая практика).
Кстати, я спрашиваю о JTA, так как мне нужно координировать транзакции через Hibernate JMS и EHCache, так что это не является общим вопросом о лучших практиках "let-use-JTA".
Удачи. Я обнаружил, что внешний менеджер транзакций (я использовал Atomikos) + Spring работал лучше для моих нужд, чем JBoss.