Spring数据jpa @transactional

时间:2013-10-31 21:10:29

标签: spring spring-data spring-data-jpa

以下是我的申请流程

Controller - services - repository

在服务层,我们有@Transactional注释 我们还有jpa:repository配置,我们指定实体管理器和txn管理器。

我怀疑是否认为考虑了jpa:repositories中指定的txn管理器,并且在服务层指定@Transactional没有任何影响。 例如:服务层@Transactional可以映射到自定义txn管理器,因为服务调用的存储库可能具有不同的txn管理器。在这种情况下,它不会产生问题吗?

当我们使用jpa存储库时,是否有人澄清我们是否需要将@Transactional放在服务层?

1 个答案:

答案 0 :(得分:19)

参见Spring Data Reference第2.3节:

http://docs.spring.io/spring-data/jpa/docs/1.0.0.M1/reference/html/#transactions

默认情况下,存储库中的CRUD方法是事务性的。虽然可以根据需要配置这些事务,但正如上面的注释中所建议的那样,事务通常是在服务层指定事务,在这种情况下:

  

存储库中的事务配置将被忽略   然后,外部事务配置确定实际的   使用

因此,在回答您的问题时,无论Spring Data事务管理是什么,都可以(并且应该)在服务级别指定事务。