瞎掰事务(二):spring事务

2 篇文章 0 订阅
2 篇文章 0 订阅

瞎掰事务(二)spring事务

事务的定义

上文中从数据库,spring 框架和系统三个层级的角度解析了事务的四大特性。每个层级都有对事务的处理机制和定义:数据库完成了事务持久性和隔离性。

持久性主要通过存储引擎和redo 日志 落盘得以保证;

隔离性即并发控制,不同的隔离级别下使用的锁技术细节不同,不同的隔离级别之下业务逻辑所要的编码约束也不同;

原子性在框架层最基本是对autocommit 的参数设置,只有取消了自动提交,将若干逻辑映射成一个原子的事务,事务的概念才得到框架层的保证;

spring 的所承担的事务的原子性一方面在与控制autocommit 的设置,另一方面是异常处理链。这是对spring事务的本质认识。

异常链:运行时异常发生的堆栈现场的层次信息;
异常的处理链:对于spring 来说,捕获是第一步…

一致性是从上至下贯穿业务系统到数据库相关。而受开发人员控制的只有业务系统层级。正确的一致性需要正确的认识和使用了spring的异常处理链条。

事务的扩展

传播行为

个数 是否支持当前事务 是否新建事务处理
PROPAGATION_MANDORY 支持当前事务,如果当前没有事务,就抛出异常 1 Y 同步当前 Y 没有当前,则新建
PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起 1或2 挂起当前,新建 Y 没有当前,则新建
PROPAGATION_REQUIRED 支持当前事务,如果当前没有事务,就新建一个事务。这是默认的的选择。 1 Y 同步当前 Y 没有当前,则新建
PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执行。否则,它看起来和 PROPAGATION_REQUIRED 看起来没什么俩样 1 Y 保留savePoint,新建  
PROPAGATION_SUPPORT 支持当前事务,如果当前没有事务,就以非事务方式执行 0或1 Y 同步当前  
PROPAGATION_NOT_SUPPORT 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起 0或ERROR 挂起当前

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值