正确的说法是,使用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的事务,所以这不是一个一般的最佳实践“让-使用-JTA”问题。
伊泰
发布于 2011-02-21 23:07:05
如果您正在使用JTA,那么JTA管理器(通常是EJB3容器)负责事务。
通常,使用的是同样好的旧的开放事务在视图模型,但是对于UserTransaction和SWING客户端,有可能拥有跨越多个请求的持久事务(虽然这是一种普遍的错误做法)。
顺便说一句,我是在询问JTA,因为我需要在Hibernate、JMS和EHCache之间协调事务,所以这不是一个一般的最佳实践“让-使用-JTA”问题。
祝好运。我发现外部事务管理器(我使用过Atomikos) + Spring比JBoss更适合我的需求。
https://stackoverflow.com/questions/4062358
复制相似问题