12

以下是我的申请流程

控制器 - 服务 - 存储库

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

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

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

4

1 回答 1

28

请参阅 Spring Data Reference 的第 2.3 节:

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

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

存储库中的事务配置将被忽略,因为外部事务配置决定了实际使用的配置。

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

于 2013-11-01T08:56:59.310 回答