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中通常指代数据层方法,也可以是业务层方法
相关推荐
lee_curry1 分钟前
jvm中的内存模型
java·jvm·内存模型
tltwuyulw3 分钟前
Java的函数式编程(三)
java·后端
ch.ju3 分钟前
Java程序设计(第3版)第二章——嵌套循环
java
直奔標竿3 分钟前
Java开发者AI转型第九课!突破知识边界!企业级 RAG (检索增强生成) 核心架构与 ETL 管道初探
java·开发语言·人工智能·后端·spring
skilllite作者6 分钟前
SkillLite Rust 沙箱与 AI Agent 自进化实战指南
开发语言·人工智能·后端·架构·rust
Java女侠_9年实战8 分钟前
为什么会丢精度?BigDecimal正确用法
后端
程途知微8 分钟前
ThreadLocal底层原理
java·后端
宝耶10 分钟前
[特殊字符] 操作日志模块复习笔记
java·开发语言·jvm
好好研究11 分钟前
Java基础学习(十三):IO流基础
java·开发语言·学习·io流
wuxinyan12312 分钟前
Java面试题52:一文深入了解Kubernetes 核心资源对象
java·kubernetes·面试题