spring是否包含jta实现?
我看到类UserTransactionAdapter实现了UserTransaction,但是javax.transaction.UserTransaction在任何spring jar中都不存在。
另一方面,jboss运行时库中存在javax.transaction.UserTransaction,但实现在spring jar中。还有另一个UserTransaction(来自jbossxts-4.17.21.Final-redhat-2.jar)实现:UserTransactionImpl可以在jboss modules文件夹的jbossxts-4.17.21.Final-redhat-2.jar中找到。
谁可以给我解释一下这个 ?
最佳答案
不,Spring没有自己的JTA实现。它具有独立于JTA API的自己的事务管理基础结构,但是具有其自己的TransactionManager API的实现,该API可以使用(委托给)JTA TransactionManager
。他自己的事务API还有其他实现,例如Hibernate-,JDO-,JPA-,DataSource,但是它们都将事务管理工作委托给基础事务基础结构。综上所述,您可以在应用程序中使用Spring事务管理基础结构,并在环境中将其委托给JTA TransactionManager
,但是Spring本身不提供JTA TransactionManager
实现。
Spring在其UserTransaction
类中实现UserTransactionAdapter
只是为了使JTA TransactionManager
适应UserTransaction
接口,因为UserTransaction
是TransactionManager
接口的确切子集,而TransactionManager
接口本身不会扩展UserTransaction
接口。仅将其视为简单的帮助程序类,除了使一个接口适应另一个接口外,它什么也没做。