Vic*_*cky 4 hibernate jta distributed-transactions
我正在阅读"Java Persistence with Hibernate"一书并被困在第494页.我们确实扩展了一个对话,hibernate.current_session_context_class to managed;这意味着现在我不能jta (or javax.jta.UserTransaction)在我的方法中使用' '
当我查看第494页的拦截器代码时,这种假设变得越来越强烈.在拦截器中,我们称之为' session.beginTransaction',这意味着我们正在使用Hibernate Transaction API来控制事务.
这是否意味着,我的实体不能使用UserTransaction.begin()/ commit()来控制事务?
我告诉这个是因为在本书的某处我甚至读到当你使用UserTransaction来控制事务边界时,你不应该使用Hibernate Transaction API吗?
这里需要一些帮助.
首先,恕我直言,你提到的这本书很棒,但现在有点过时了.但我可以肯定地猜测,你的问题是基于被称为"Hibernate中的语境会话"的问题.它基本上是关于您希望Hibernate管理事务范围的上下文.此上下文驱动sessionFactory.getCurrentSession()方法的机制.
hibernate.current_session_context_class有三种可能的配置:
也:
现在看看这两个很棒的链接:
http://community.jboss.org/wiki/SessionsAndTransactions
http://community.jboss.org/wiki/OpenSessionInView
第一个用于更新清除信息,后者用于查看"托管"上下文的自定义实现.这将清除很多事情.无论如何:
我正在阅读"Java Persistence with Hibernate"一书并被困在第494页.我们通过将hibernate.current_session_context_class设置为managed来扩展会话; 这是否意味着我现在不能在我的方法中使用'jta(或javax.jta.UserTransaction)'?
您可以 - 因为它是托管上下文,它将取决于您的自定义实现.
这是否意味着,我的实体不能使用UserTransaction.begin()/ commit()来控制事务?
他们可以 - 实际上这正是你在"jta"和"线程"背景下所做的事情.
| 归档时间: |
|
| 查看次数: |
5534 次 |
| 最近记录: |