是否使用JTA交易?

new*_*guy 7 ejb transactions jta java-ee

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

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

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

Arj*_*jms 16

始终建议JTA事务高于其他类型的事务API,特别是如果您指的是仍然属于JPA API的本机事务.请注意,您不能说"JTA与资源本地事务",因为JTA实际上管理资源本地事务等.

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

关于使用XA或资源本地事务与JTA之间的选择,有一些话要说.有关这方面的更多详细信息,请参阅我的答案:JPA2 + Hibernate 3.6.0中的JTA或LOCAL事务?

我想知道为什么将EJB 2与JPA 2.0结合使用.EJB 3.1在这里将是一个更合乎逻辑的选择.EJB 2已完全弃用(将在Java EE 7中进行修剪).