说使用 JTA
是否正确?与 H 的交易 ibernate
使用 Open-Session-In-View
进行对比关于 session 范围?
从我能够在 JTA
中收集 session 范围的内容来看transactions 是在 Open-Session-In-View
中的一个事务(主要是基于这个 link )模式 session 的范围是请求,你可以在其中有多个事务。
我在问,首先要了解,其次要验证“谁”在使用 JTA
时负责 session 处理。 .
当前,在使用 Open-Session-In-View
时, 我有一个 HibernateUtil
处理 session 的打开、检索和关闭的类(通过 ThreadLocal<Session>
)。
当我切换到使用 JTA
时将Hibernate
处理上述 session 操作? (作为我调用 userTransaction.begin、userTransaction.rollback 的派生物)
顺便说一句,我问的是 JTA
因为我需要协调 Hibernate
之间的交易JMS
和 EHCache
所以这不是一般的最佳实践“lets-use-JTA”问题。
一泰
最佳答案
好吧,如果您使用的是 JTA,那么 JTA 管理器(通常是 EJB3 容器)负责事务。
通常,使用同样好的旧的 View 中的开放事务模型,但是对于 UserTransaction
和 SWING 客户端来说,可能有跨越多个请求的持久事务(尽管这通常是一种不好的做法)。
BTW, I'm asking about JTA as I need to coordinate a transaction across Hibernate JMS and EHCache so this isn't a general best-practices "lets-use-JTA" question.
祝你好运。我发现外部事务管理器(我使用过 Atomikos)+ Spring 比 JBoss 更能满足我的需求。
关于java - JTA 事务中的 Hibernate session 范围与 Open-Session-In-View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4062358/