Java 使用什么事务管理器?(JPA,Spring)

Java 使用什么事务管理器?(JPA,Spring),java,spring,jpa,transactions,Java,Spring,Jpa,Transactions,我正在开发一个基于JPA+Hibernate、Spring和Wicket的web应用程序。我想知道在我的代码中实现事务的最佳方式是什么?我应该使用什么事务管理器?它应该是org.springframework.orm.jpa.JpaTransactionManager,还是org.springframework.jdbc.datasource.DataSourceTransactionManager或其他什么?我想使用Spring来管理我的事务 org.springframework.orm.j

我正在开发一个基于JPA+Hibernate、Spring和Wicket的web应用程序。我想知道在我的代码中实现事务的最佳方式是什么?我应该使用什么事务管理器?它应该是
org.springframework.orm.jpa.JpaTransactionManager
,还是
org.springframework.jdbc.datasource.DataSourceTransactionManager
或其他什么?我想使用Spring来管理我的事务

org.springframework.orm.jpa.JpaTransactionManager
我倾向于将其与注释一起使用:

<tx:annotation-driven transaction-manager="myTxManager" />

,您只能使用JpaTransactionManager。我们在这里讨论的事务管理器抽象是Spring的接口,并且是该接口的唯一理解JPA的实现


您应该阅读Spring参考中的一章,以便更好地理解此主题。

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

平台TransactionManager接口及其实现

  • JtaTransactionManager--->JTA
  • 数据源TransactionManager--->JDBC
  • JpaTransactionManager-->JPA
  • HibernateTransactionManager----休眠

  • 根据您的要求,您使用的是哪种类型的spring(为了完整性,

    +1,为了公平起见,+1用于nanda:)@SeanPatrickFloyd如果我们可以使用JpaTransactionManager,那么为什么在spring中存在这么多其他transactionmanager,以及何时应该使用它们?@Erlan只有一个transactionmanager实现每种持久性类型:jdbc、hibernate、jpa、JDM。现在我明白了。感谢为什么不同的持久性类型(jdbc、hibernate、jpa…)依赖于相同的接口
    PlatformTransactionManager
    ,但只能用于特定的实现?