Q:数据库方法的传播特性,外层方法的事务注解@Transactional默认会影响本方法么

发布时间 2023-04-15 17:23:54作者: codesea

外层方法的事务注解默认会影响本方法么

  • 涉及知识:事务的传播特性
    image

  • 实验前推测:目前了解内、外方法某个发生异常执行回滚是否影响另一个方法是由配置的哪个传播特性决定的。推测内方法出现异常要导致外方法的事务也要回滚,因为这个在现实场景最普遍。

  • 实验:
    描述:roleService.insertRole这个内部方法发生异常,getUserInfo上有回滚注解
    image
    结果:user插入被回滚
    结论:推测正确,使用了Propagation.REQUIRED。某个方法加了事务注解,这个方法的整个调用链中有任何一个地方发生了异常,这个方法里的所有数据库操作都会回滚

  • 加深理解:事务比作一个瓶子,默认的这个传播行为会看调用我的外部方法有没有瓶子了,有我就把我的操作放有的那个瓶子里,没有我自己搞一个瓶子。因为只有一个瓶子,如果瓶子中那些操作里有那个有问题,瓶子内所有的操作都不执行了。

  • 问题:这些传播行为现实业务中的使用场景