持久性单元作为 RESOURCE_LOCAL 还是 JTA? [英] Persistence unit as RESOURCE_LOCAL or JTA?

查看:26
本文介绍了持久性单元作为 RESOURCE_LOCAL 还是 JTA?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下疑问:

  1. 这两者有什么区别?
  2. 所有数据库都支持这两个吗?
  3. JPA TransactionManager 和 JTA TransactionManager 是否不同?

推荐答案

JPA 实现可以选择自己管理事务 (RESOURCE_LOCAL),或者让它们由应用服务器的 JTA 实现管理.

JPA implementations have the choice of managing transactions themselves (RESOURCE_LOCAL), or having them managed by the application server's JTA implementation.

在大多数情况下,RESOURCE_LOCAL 没问题.这将使用基本的 JDBC 级事务.缺点是事务对 JPA 持久化单元来说是本地的,所以如果你想要一个跨越多个持久化单元(或其他数据库)的事务,那么 RESOURCE_LOCAL 可能不够好.

In most cases, RESOURCE_LOCAL is fine. This would use basic JDBC-level transactions. The downside is that the transaction is local to the JPA persistence unit, so if you want a transaction that spans multiple persistence units (or other databases), then RESOURCE_LOCAL may not be good enough.

JTA 还用于管理跨系统(如 JMS 和 JCA)的事务,但这对我们大多数人来说是相当奇特的用法.

JTA is also used for managing transactions across systems like JMS and JCA, but that's fairly exotic usage for most of us.

要使用 JTA,您需要在您的应用服务器中对其进行支持,并且还需要来自 JDBC 驱动程序的支持.

To use JTA, you need support for it in your application server, and also support from the JDBC driver.

这篇关于持久性单元作为 RESOURCE_LOCAL 还是 JTA?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆