Spring 事务

Spring 事务

Spring 事务实现方式有哪些

编程式

  • 优点:灵活
  • 缺点:麻烦,难以维护

声明式

  • 加注解
  • Spring的事务管理有什么优点
    • 支持声明式事务管理
    • 提供跨不同事务api的一致事务模型

Spring事务隔离等级

一共五种

  • DEFAULT:根据数据库的隔离等级
  • READ_UNCOMMITTED 读未提交
  • READ_COMMITTED 读已提交
  • REPEATABLE_READ 可重复读
  • SERIALIZABLE 串行化

传播规则

image

借用 别人的的图片方便记忆
a
支持当前事务的“女生”,这里的事务指的是“房子”,它分为 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方法

posted @   xiuer211  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示