首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否使用JTA事务?

是否使用JTA事务?
EN

Stack Overflow用户
提问于 2011-01-17 11:41:53
回答 2查看 11.5K关注 0票数 7

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

我使用Hibernate 3.6 (JPA 2.0实现)进行事务处理。我应该使用JTA,它是容器管理的事务,还是使用它过于夸张了?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-22 23:04:41

JTA事务总是比其他类型的事务API更受推荐,特别是当您引用的本地事务仍然是JPA API的一部分时。请注意,您不能说“JTA与资源本地事务”,因为JTA实际上管理资源本地事务。

Gavin King (Hibernate的创建者)曾在一次采访中表示,这种特定于JPA的API是一个错误,应该首选更灵活的JTA API。特别是在使用声明性事务时,JTA是非常轻量级的。单词overkill实际上更适用于使用JPA原生事务API,而不是使用JTA。

关于使用XA还是使用JTA的资源本地事务之间的选择,有一些需要说明的问题。有关更多细节,请参阅我的答案:JTA or LOCAL transactions in JPA2+Hibernate 3.6.0?

我想知道您为什么要将EJB2与JPA2.0结合使用。在这里,EJB 3.1将是一个更符合逻辑的选择。EJB 2已完全弃用(将在JavaEE7中修剪)。

票数 17
EN

Stack Overflow用户

发布于 2011-07-30 02:57:19

我建议使用XA事务,即使应用程序当前只访问一种资源(数据库)。原因:

1)将来,如果应用程序决定包含除当前数据库之外的其他事务资源,它将发现更容易,因为XA事务管理已经就位,然后可以将多个事务资源组合到单个事务中。

2)由于您目前只有一个事务资源,我认为与本地事务相比,使用XA不会影响性能。原因是XA/JTA事务管理器已经对单个事务资源的情况进行了某种优化(他们称之为单阶段优化)。

希望这能有所帮助。

Nitin

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4709864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档