Spring 数据 jpa @transactional

标签 spring spring-data spring-data-jpa

下面是我的申请流程

Controller - 服务 - 存储库

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

我的怀疑是我觉得jpa:repositories中指定的txn manager被考虑了,在服务层指定@Transactional没有影响。 例如:服务层 @Transactional 可以映射到自定义 txn 管理器,因为服务调用的存储库可能有不同的 txn 管理器。那样会不会有问题?

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

最佳答案

参见 Spring Data Reference 的第 2.3 节:

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

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

The transaction configuration at the repositories will be neglected then as the outer transaction configuration determines the actual one used.

因此,在回答您的问题时,可以(并且应该)在服务级别指定事务,而不管 Spring Data 事务管理如何。

关于 Spring 数据 jpa @transactional,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19716673/

相关文章:

java - 如何在 Activiti Service Task 中立即将实体持久保存/提交到数据库

java - next() 与 Single() 哪个有效?

java - 使用 java.time 进行 hibernate

spring - 是否可以在没有 Redis 的情况下使用 Spring Boot session ?

java - 必须启动 Instrumentation LoadTimeWeaver/openjdk 11

spring - @NamedQuery 覆盖 Spring Data Rest JpaRepository 中的 findAll

java - 如何覆盖 Spring Data CrudRepository 上的删除方法?

java - JPA - 带有 in 子句且不区分大小写的规范

嵌套对象的 Spring 数据休息查询

java - Spring 依赖注入(inject)与实用程序的静态类?