transactions - 是否使用 JTA 事务?

标签 transactions jakarta-ee ejb jta

我正在开发一个部署在 JBoss 应用服务器上的 J2EE 应用程序。
该应用程序由一个 EJB 2.x 组件和一个 Web 组件组成,并在本地计算机或远程服务器上运行。数据库是 Oracle 或 SQL Server,并且不在分布式环境中。

我正在使用 Hibernate 3.6(JPA 2.0 实现)进行交易。我应该使用容器管理事务的 JTA 还是使用它过度?

目前我正在使用 JTA,结果证明它运行良好,但有一些小问题,我不知道它是否与事务管理有关。使用本地事务管理会更容易或更可靠吗?

最佳答案

JTA 事务始终推荐在其他类型的事务 API 之上,尤其是当您指的是仍然是 JPA API 一部分的 native 事务时。请注意,您不能说“JTA 与资源本地事务”,因为 JTA 实际上管理资源本地事务等。

Gavin King(Hibernate 的创造者)曾在一次采访中表示,这个 JPA 特定的 API 是一个错误,应该首选更灵活的 JTA API。尤其是在使用声明式事务时,JTA 是非常轻量级的。字overkill实际上将更多地应用于使用 JPA 本地事务 API,然后使用 JTA。

关于在 JTA 中使用 XA 或资源本地事务之间的选择,有一些话要说。有关更多详细信息,请参阅我的回答:JTA or LOCAL transactions in JPA2+Hibernate 3.6.0?

我确实想知道您为什么将 EJB 2 与 JPA 2.0 结合使用。 EJB 3.1 在这里是一个更合乎逻辑的选择。 EJB 2 已完全弃用(将在 Java EE 7 中删除)。

关于transactions - 是否使用 JTA 事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709864/

相关文章:

java - 根据今天的日期获取记录

java - @Asynchronous 是否有超时

mysql - MySQL 事务和变量的问题

MySQL - 在嵌入式程序的情况下回滚事务

java - 我的机器和 Java 是 32 位还是 64 位?

JPA ManyToMany,JoinTable 怎么会有属性?

java - JPA实体: How to establish relationship between Parent and multiple Child classes

php - MongoDB 4.0 中使用 PHP 的事务示例

ruby-on-rails - 使用 RSpec 测试 Redis 事务

mysql - 如何从MYSQL数据库获取数据