这两者有什么区别? 所有数据库都支持这两者吗? JPA TransactionManager和JTA Transaction Manager是否不同?
4个答案
比较RESOURCE_LOCAL和JTA持久性 上下文
使用 <持久性-单位 transaction-type=“RESOURCE_LOCAL”> 你 负责EntityManager (PersistenceContext/Cache)正在创建和跟踪。。。
你 必须 使用 实体管理器工厂 获取EntityManager 产生的结果 实体管理器 实例 是 持久化上下文/缓存 安 实体管理器工厂 可以通过 @持久性单元 仅注释(不 @持久性上下文) 你是 不 允许 使用@PersistenceContext引用类型为RESOURCE_LOCAL的单元 你 必须 使用 实体事务处理 要开始/提交的API 每一个 致电您的EntityManger 打电话 entityManagerFactory.createEntityManager()两次会导致 二 独立的EntityManager实例及其 二 单独的PersistenceContexts/Caches。 它 是 几乎从来没有 有一个以上的好主意 实例 正在使用的EntityManager的 第二个,除非你摧毁了第一个)
使用 <持久性-单位 transaction-type=“JTA”> 这个 集装箱 将执行EntityManager (PersistenceContext/Cache)正在创建和跟踪。。。
你 不能 使用 实体管理器工厂 获取EntityManager 你只能得到 实体管理器 由提供 容器 安 实体管理器 可以通过 @持久性上下文 仅注释(不是@PersistenceUnit) 你是 不 允许使用@PersistenceUnit引用 JTA型装置 这个 实体管理器 由提供 容器是一个 参考 到 与JTA事务关联的PersistenceContext/Cache。 如果没有JTA事务正在进行,则EntityManager 无法使用 因为没有 PersistenceContext/Cache。 每个拥有EntityManager的人 对的引用 同一单位 在中 相同的 交易 将自动引用 相同的PersistenceContext/Cache 这个 PersistenceContext/Cache是 冲洗 并于 联合战术分析 犯罪 时间
-
11 只想补充一点:如果你正在使用Spring,你可以在Resource_Local中使用@PersistenceContext和EntityManager。 在这种情况下,Spring容器可以使用@Transactional注释管理事务。 – 山姆 评论 2015年6月23日12:09 -
-
-
-
1