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中通常指代数据层方法,也可以是业务层方法
相关推荐
mldong2 小时前
C# 开发者也有自己的轻量工作流引擎了:NuGet 装包,5 分钟跑通一条审批流
后端·c#·.net
梁云亮3 小时前
spring整合Junit4
spring
xcl09253 小时前
幼儿托育系统开发实战:从需求分析到上线全流程指南
java·大数据·需求分析
吴声子夜歌3 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
小小猪的春天3 小时前
Java 手写第一个 MCP Server:Spring AI MCP 半小时跑通
java·人工智能·spring boot·ai编程
find1star3 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
爱学堂IT分享4 小时前
鹤翔老师pmp项目管理培训认证考试课 (直播录播题库送学时证明)【共58课时】-51CTO学堂
后端
今天AI了吗4 小时前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
王的宝库4 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
许彰午4 小时前
27-AuthService登录链路
java·低代码·架构