要使用什么事务管理器?(JPA,春天)

Joh*_*nak 20 java spring jpa transactions

我正在开发一个基于JPA + Hibernate,Spring和Wicket的Web应用程序.我想知道在我的代码中实现事务的最佳方法是什么?我应该使用什么交易经理?应该是org.springframework.orm.jpa.JpaTransactionManager,org.springframework.jdbc.datasource.DataSourceTransactionManager或者别的什么?我想用Spring来管理我的交易.

Sea*_*oyd 26

南大是正确的,你可以只使用JpaTransactionManager接口.我们在这里讨论的事务管理器抽象是Spring的PlatformTransactionManager接口,而JPATransactionManager是理解JPA的那个接口的唯一实现.

您应该阅读Spring参考中的" 事务管理 "一章,以便更好地理解本主题.

  • @SeanPatrickFloyd如果我们只能使用JpaTransactionManager,那么为什么在Spring中还有这么多其他transacitonManager,以及何时应使用它们? (2认同)

nan*_*nda 7

org.springframework.orm.jpa.JpaTransactionManager
Run Code Online (Sandbox Code Playgroud)

我的偏好是使用带注释:

<tx:annotation-driven transaction-manager="myTxManager" />
Run Code Online (Sandbox Code Playgroud)


小智 6

org.springframework.transaction.PlatformTransactionManager接口是Spring API中的关键抽象,提供了在运行时控制事务操作的基本方法:开始,提交和回滚。

PlatformTransactionManager接口,其实现

  1. JtaTransactionManager -----> JTA
  2. DataSourceTransactionManager -----> JDBC
  3. JpaTransactionManager ------> JPA
  4. HibernateTransactionManager ------> 休眠

它取决于您的要求,您正在使用哪个弹簧模块