我正在使用带有JPA的spring . 我有两个EntityManagers包含不同的实体(一个应用程序的不同模块),并且都指向相同的数据源 .
我可以在一个事务中使用它们(使用单个TransactionManager)吗?我必须使用JTA吗?如果是这样,在tomcat下使用它的最佳选择是什么?
如何在 Spring 天配置它?
标准JPA事务和Spring的 JpaTransactionManager 都绑定到单个 EntityManager . 他们无法与多个经理交谈,因此无法协调跨越他们的交易 .
JpaTransactionManager
EntityManager
如果您需要这样做,您需要合并您的实体管理器配置,这样您只有一个 EntityManager ,或者使用JTA事务(通过Spring的JtaTransactionManager) .
如果您使用的是Tomcat(没有开箱即用的JTA支持),那么您需要找到第三方JTA实现 .
1 回答
标准JPA事务和Spring的
JpaTransactionManager
都绑定到单个EntityManager
. 他们无法与多个经理交谈,因此无法协调跨越他们的交易 .如果您需要这样做,您需要合并您的实体管理器配置,这样您只有一个
EntityManager
,或者使用JTA事务(通过Spring的JtaTransactionManager) .如果您使用的是Tomcat(没有开箱即用的JTA支持),那么您需要找到第三方JTA实现 .