Spring 事务
Spring 事务
Spring 事务实现方式有哪些
编程式
- 优点:灵活
- 缺点:麻烦,难以维护
声明式
- 加注解
- Spring的事务管理有什么优点
- 支持声明式事务管理
- 提供跨不同事务api的一致事务模型
Spring事务隔离等级
一共五种
- DEFAULT:根据数据库的隔离等级
- READ_UNCOMMITTED 读未提交
- READ_COMMITTED 读已提交
- REPEATABLE_READ 可重复读
- SERIALIZABLE 串行化
传播规则
借用 别人的的图片方便记忆
支持当前事务的“女生”,这里的事务指的是“房子”,它分为 3 种(普通型女生):
- Propagation.REQUIRED(需要有房子):有房子了咱们一起住,没房子了咱们一起赚钱买房子。
- Propagation.SUPPORTS(可以有房子):有房子了就一起住,没房子了咱们就一起租房子。
- Propagation.MANDATORY(强制有房子):有房子了就一起住,没房子了就分手。
不支持当前事务的“女生”也分为 3 种(强势型或者叫事业型):
- Propagation.REQUIRES_NEW:不要你的房子,必须一起赚钱买房子。
- Propagation.NOT_SUPPORTED:不要你的房子,必须一起租房子。
- Propagation.NEVER:必须一起租房子,你有房子就分手。
最后一种是嵌套性事务 Propagation.NESTED,它属于懂事型女友,如果有房子了就以房子为基础做点小生意,卖个花生、水果啥的,如果买卖成了,那就继续发展;如果失败了,至少还有房子;如果没房子也没关系,一起赚钱买房子。
推荐阅读
https://www.cnblogs.com/vipstone/p/16735893.html
https://medium.com/spring-boot/understanding-spring-transaction-propagation-86beeb869527
Spring事务失效的场景
- 数据库引擎不支持事务
- 不是public方法
- 没有被spring管理
- 自身调用,直接调用@transactional的方法
- 没有配置事务管理器
- 事务的传播等级是不支持事务的,例如never,not_support
- 没有抛出异常
- 抛出异常类型不符合
总结
最常见的是:自身调用,抛出异常不合适,不是public方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix