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中通常指代数据层方法,也可以是业务层方法
相关推荐
小码哥_常3 小时前
Spring Boot 牵手Spring AI,玩转DeepSeek大模型
后端
0xDevNull4 小时前
Java反射机制深度解析:从原理到实战
java·开发语言·后端
华洛4 小时前
我用AI做了一个48秒的真人精品漫剧,不难也不贵
前端·javascript·后端
华科易迅4 小时前
MybatisPlus增删改查操作
android·java·数据库
AugustRed4 小时前
基于现有的 Controller 接口 API 暴露 MCP
spring·mcp
WZTTMoon4 小时前
Spring Boot 中Servlet、Filter、Listener 四种注册方式全解析
spring boot·后端·servlet
standovon4 小时前
Spring Boot整合Redisson的两种方式
java·spring boot·后端
Cosolar5 小时前
LlamaIndex RAG 本地部署+API服务,快速搭建一个知识库检索助手
后端·openai·ai编程
IAUTOMOBILE5 小时前
Python 流程控制与函数定义:从调试现场到工程实践
java·前端·python
hutengyi5 小时前
PostgreSQL版本选择
java