UserTransactionAdapter 与 UserTransactionImpl
UserTransactionAdapter vs UserTransactionImpl
spring是否包含 jta 实现?
我看到 class UserTransactionAdapter implements UserTransaction 但 javax.transaction.UserTransaction 不存在于任何 spring jar 中。
另一方面,javax.transaction.UserTransaction 存在于 jboss 运行时库中,但实现在 spring jar 中。另一个 UserTransaction(来自 jbossxts-4.17.21.Final-redhat-2.jar)实现:UserTransactionImpl 可以在 jbossxts-4.17.21.Final- 中找到jboss 模块文件夹中的 redhat-2.jar。
谁能给我解释一下?
不,Spring 没有自己的 JTA 实现。它有自己的事务管理基础设施,独立于 JTA API,但它有自己的 TransactionManager API 的实现,可以使用(委托给) 一个 JTA TransactionManager
。他自己的事务还有其他的实现API比如Hibernate-、JDO-、JPA-、DataSource,但是他们都把事务管理的工作委托给了底层的事务基础设施。总而言之,您可以在您的应用程序中使用 Spring 事务管理基础结构,如果您的环境中有 JTA TransactionManager
,则可以将其委托给 JTA,但 Spring 本身不提供 JTA TransactionManager
实施。
Spring 在 UserTransactionAdapter
class 中对 UserTransaction
的实现只是为了使 JTA TransactionManager
适应 UserTransaction
接口,因为虽然 UserTransaction
是 TransactionManager
接口的精确子集,但 TransactionManager
接口本身并不扩展 UserTransaction
接口。仅将其视为一个简单的助手class,除了将一个界面适配到另一个界面外,它什么都不做。
Does spring contains a jta implementation ?
没有
I see that class UserTransactionAdapter implements UserTransaction but javax.transaction.UserTransaction don't exists in any spring jar.
javax.transaction.UserTransaction
是JTA规范的一个元素,换句话说它是一个标准API。 Spring 没有理由包含它。
In the other hand javax.transaction.UserTransaction exists in jboss runtime library
确实如此,因为 JBoss 是一个符合 JEE 的应用程序服务器,所以它包含 JEE 标准库(JTA、JPA、JMS 等)
but the implementation is in a Spring jar.
只是将UserTransaction映射到TransactionManager的语法糖而已,就是not intended for direct use in application code。
And another UserTransaction (from jbossxts-4.17.21.Final-redhat-2.jar) implementation: UserTransactionImpl can be found in jbossxts-4.17.21.Final-redhat-2.jar in jboss modules folder.
作为 JBoss 实现 JTA 规范:它是 jboss UserTransaction 标准 API 的实现。
Can someone explain this to me ?
Spring提供统一的API以非常简单的方式处理不同的事务管理器。您只需对 Spring 说在配置中使用实现 X 或 Y。最后,spring 委托 真实 事务管理到您选择的实现。 (为了执行此委托,似乎在某些情况下 Spring 内部需要语法糖 'UserTransactionAdapter')
spring是否包含 jta 实现?
我看到 class UserTransactionAdapter implements UserTransaction 但 javax.transaction.UserTransaction 不存在于任何 spring jar 中。
另一方面,javax.transaction.UserTransaction 存在于 jboss 运行时库中,但实现在 spring jar 中。另一个 UserTransaction(来自 jbossxts-4.17.21.Final-redhat-2.jar)实现:UserTransactionImpl 可以在 jbossxts-4.17.21.Final- 中找到jboss 模块文件夹中的 redhat-2.jar。
谁能给我解释一下?
不,Spring 没有自己的 JTA 实现。它有自己的事务管理基础设施,独立于 JTA API,但它有自己的 TransactionManager API 的实现,可以使用(委托给) 一个 JTA TransactionManager
。他自己的事务还有其他的实现API比如Hibernate-、JDO-、JPA-、DataSource,但是他们都把事务管理的工作委托给了底层的事务基础设施。总而言之,您可以在您的应用程序中使用 Spring 事务管理基础结构,如果您的环境中有 JTA TransactionManager
,则可以将其委托给 JTA,但 Spring 本身不提供 JTA TransactionManager
实施。
Spring 在 UserTransactionAdapter
class 中对 UserTransaction
的实现只是为了使 JTA TransactionManager
适应 UserTransaction
接口,因为虽然 UserTransaction
是 TransactionManager
接口的精确子集,但 TransactionManager
接口本身并不扩展 UserTransaction
接口。仅将其视为一个简单的助手class,除了将一个界面适配到另一个界面外,它什么都不做。
Does spring contains a jta implementation ?
没有
I see that class UserTransactionAdapter implements UserTransaction but javax.transaction.UserTransaction don't exists in any spring jar.
javax.transaction.UserTransaction
是JTA规范的一个元素,换句话说它是一个标准API。 Spring 没有理由包含它。
In the other hand javax.transaction.UserTransaction exists in jboss runtime library
确实如此,因为 JBoss 是一个符合 JEE 的应用程序服务器,所以它包含 JEE 标准库(JTA、JPA、JMS 等)
but the implementation is in a Spring jar.
只是将UserTransaction映射到TransactionManager的语法糖而已,就是not intended for direct use in application code。
And another UserTransaction (from jbossxts-4.17.21.Final-redhat-2.jar) implementation: UserTransactionImpl can be found in jbossxts-4.17.21.Final-redhat-2.jar in jboss modules folder.
作为 JBoss 实现 JTA 规范:它是 jboss UserTransaction 标准 API 的实现。
Can someone explain this to me ?
Spring提供统一的API以非常简单的方式处理不同的事务管理器。您只需对 Spring 说在配置中使用实现 X 或 Y。最后,spring 委托 真实 事务管理到您选择的实现。 (为了执行此委托,似乎在某些情况下 Spring 内部需要语法糖 'UserTransactionAdapter')