【发布时间】:2015-04-03 18:27:27
【问题描述】:
对该主题的各种部分描述使我怀疑 BMT 与应用程序管理的 EntityManager 密切相关(以及 UserTransaction 的使用),而 CMT 与容器管理的 EntityManager 密切相关。
谁能清楚地解释(或指出)BMT/CMT 与应用程序/容器管理的 EntityManager 的关系?
事务分界类型和 EntityManager 管理类型之间允许哪些组合?
- 能否将应用程序管理的 EntityManager 与 CMT 结合使用?
- 我可以将容器管理的 EntityManager 与 BMT 结合使用吗?
另外,UserTransaction 和 BMT/CMT 与应用程序/容器管理的 EntityManager 之间是什么关系?
- 我可以将 UserTransaction 与容器管理的 EntityManager 一起使用吗?
- UserTransaction 是否暗示 BMT,反之亦然?
编辑:根据http://www.byteslounge.com/tutorials/container-vs-application-managed-entitymanager,我可以以任何我喜欢的方式将 CMT/BMT 与应用程序/容器管理的 EntityManager 结合起来。这仍然给我留下了关于 UserTransaction 和 BMT 之间关系的问题。一种暗示另一种吗?
编辑:与上面发布的链接相反,http://docs.oracle.com/javaee/6/tutorial/doc/bnbqw.html#bnbra 声称“应用程序管理的实体管理器不会自动传播 JTA 事务上下文。此类应用程序需要手动 strong> 访问 JTA 事务管理器并在执行实体操作时添加事务分界信息。javax.transaction.UserTransaction 接口定义了开始、提交和回滚事务的方法。注入 UserTransaction 的实例通过创建一个带有@Resource 注释的实例变量”。对我来说,这听起来像是“应用程序管理的实体管理器需要 bean 管理的事务划分”。 谁是对的?甲骨文还是 Byteslounge?
【问题讨论】:
标签: jakarta-ee jpa transactions entitymanager bean-managed-transactions