Spring18——Spring事务角色(事务管理员、事务协调员)

39-Spring事务角色

这部分我们重点要理解两个概念,分别是事务管理员事务协调员

当未开启Spring事务时

  • AccountDao的outMoney因为是修改操作,会开启一个事务T1
    AccountDao的inMoney因为是修改操作,会开启一个事务T2
  • AccountService的transfer没有事务,
    • 运行过程中如果没有抛出异常,则T1和T2都正常提交,数据正确
    • 如果在两个方法中间抛出异常,T1因为执行成功提交事务,T2因为抛异常不会被执行
    • 就会导致数据出现错误

当开启Spring的事务管理后

  • transfer上添加了@Transactional注解,在该方法上就会有一个事务T
  • 因为T1 T2都在T的控制范围内,所以
    AccountDao的outMoney方法的事务T1加入到transfer的事务T中
    AccountDao的inMoney方法的事务T2加入到transfer的事务T中
  • 现在整体就相当于只有T一个事务了,这样就保证他们在同一个事务中,当业务层中出现异常,整个事务就会回滚,保证数据的准确性

通过上面例子的分析,我们就可以得到如下概念:

  • 事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法
  • 事务协调员:加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法
相关推荐
瑞士卷@15 分钟前
spring从入门到精通(spring学习笔记,持续更新中)
笔记·学习·spring
程序新视界17 分钟前
MySQL的整体架构及功能详解
数据库·后端·mysql
绝无仅有18 分钟前
猿辅导Java面试真实经历与深度总结(二)
后端·面试·github
悟能不能悟19 分钟前
java重构旧代码有哪些注意的点
java·开发语言·重构
绝无仅有24 分钟前
猿辅导Java面试真实经历与深度总结(一)
后端·面试·github
怪兽20141 小时前
Redis过期键的删除策略有哪些?
java·数据库·redis·缓存·面试
Victor3561 小时前
Redis(76)Redis作为缓存的常见使用场景有哪些?
后端
Victor3561 小时前
Redis(77)Redis缓存的优点和缺点是什么?
后端
workflower4 小时前
单元测试-例子
java·开发语言·算法·django·个人开发·结对编程
YuanlongWang4 小时前
C# 基础——装箱和拆箱
java·开发语言·c#