我读了一本“”的书,被困在了Page#494上。我们通过设置hibernate.current_session_context_class to managed;来扩展会话,这是否意味着我现在不能在我的方法中使用'jta (or javax.jta.UserTransaction)‘?
当我查看Page#494的拦截器代码时,这个假设变得更加强大了。在拦截器中,我们调用'session.beginTransaction‘,这意味着我们使用Hibernate事务API来控制事务。
这是否意味着我的实体不能使用UserTransaction.begin()/commit()来控制事务?
我之所以这么说,是因为在这本书的某个地方,我甚至读到,当您使用UserTransaction控制事务边界时,您不应该使用Hibernate事务API?
这里需要帮助。
发布于 2011-10-28 18:08:16
首先,IMHO --你提到的书--很好,但现在有点过时了。但我可以有把握地猜测,你的问题是基于所谓的“Hibernate中的上下文会话”。它基本上是关于上下文的,您希望Hibernate在其中管理事务的范围。这个上下文驱动sessionFactory.getCurrentSession()方法的机制。
有三种可能对hibernate.current_session_context_class的信任:
transaction
)
另外:
现在请查看以下两个伟大的链接:
http://community.jboss.org/wiki/SessionsAndTransactions
http://community.jboss.org/wiki/OpenSessionInView
第一个用于更新clear信息,后者用于查看“托管”上下文的自定义实现。这会澄清很多事情的。无论如何:
我正在读“”一书,却被困在了Page#494上。我们通过将hibernate.current_session_context_class设置为managed来扩展会话;这是否意味着我现在不能在我的方法中使用“jta(或javax.jta.UserTransaction)”?
您可以--因为它是托管上下文,它将依赖于您的自定义实现。
是否意味着,我的实体不能使用UserTransaction.begin()/commit()来控制事务?
它们可以--事实上,这正是您在"jta“和”线程“上下文中要做的。
https://stackoverflow.com/questions/5940042
复制相似问题