默认值
在JavaEE环境中,默认值为 JTA ;在JavaSE环境中,默认值为 RESOURCE_LOCAL 。
RESOURCE_LOCAL
与
<persistence-unit transaction-type="RESOURCE_LOCAL">您一起负责
EntityManager(
PersistenceContext/Cache)创建和跟踪
- 您必须使用
EntityManagerFactory
来获得EntityManager
- 结果
EntityManager
实例为PersistenceContext/Cache
An,EntityManagerFactory
只能通过@PersistenceUnit
注释注入(不能通过@PersistenceContext
) - 不允许使用
@PersistenceContext
引用类型的单位RESOURCE_LOCAL
- 您必须使用
EntityTransaction
API来开始/提交对您的每次调用的请求EntityManger
- 调用
entityManagerFactory.createEntityManager()
两次将导致两个单独的EntityManager
实例,因此产生两个单独的PersistenceContexts/Caches
。 - 拥有一个以上
EntityManager
正在使用的实例几乎从来不是一个好主意(除非已销毁了第一个实例,否则不要创建第二个实例)
日本旅游协会
使用
<persistence-unit transaction-type="JTA">容器将
EntityManager(
PersistenceContext/Cache)创建和跟踪。
- 您不能使用
EntityManagerFactory
来获得EntityManager
- 您只能得到
EntityManager
集装箱提供的 - 一个
EntityManager
可以通过被注入@PersistenceContext
注解只有(未@PersistenceUnit
) - 不允许使用
@PersistenceUnit
引用JTA类型的单元 - 在
EntityManager
由容器给出的到一个参考PersistenceContext/Cache
与JTA事务相关联。 - 如果没有正在进行的JTA事务,则
EntityManager
因为没有,所以不能使用PersistenceContext/Cache
。 EntityManager
在同一笔交易中引用相同单位的每个人都将自动引用相同的PersistenceContext/Cache
- 在
PersistenceContext/Cache
刷新和JTA清除提交时间



