如何在Spring Boot中使用@Transactional批注

时间:2019-05-02 06:05:36

标签: java database spring-boot annotations transactional

我正在做一个春季启动项目。

在我的项目中使用@Transactional注释之前,我有两个问题

  1. 在spring-boot,服务层或DAO层中使用@Transactional注释的最佳实践?

  2. 如果是服务层,那么在类或该类中的方法上应该在哪里使用@Transactional注释?

2 个答案:

答案 0 :(得分:2)

  1. @Transactional中使用Service layer,因为DAO层不应包含业务逻辑
  

服务层可以调用不同的DAO来执行数据库操作。让我们假设一个服务方法中有3个DAO操作的情况。如果您的第一个DAO操作失败,则其他两个操作可能仍会通过,并且您最终将获得不一致的DB状态。注释服务层可以帮助您避免此类情况的发生。

  1. 在方法级别使用它,因为类级别的用处不大,因为它强制所有方法(以及将来的方法/子类)都是事务性的
  

在类级别,此注释默认应用于声明类及其子类的所有方法

答案 1 :(得分:1)

  1. 在服务层:您希望您的整个业务方法都是ACID
  2. 如果要使所有bean方法都具有事务性,请在类上,如果希望特定的方法应具有转换性,或具有不同的事务属性,请在该方法上