spring事务简单概述

spring事务

四个性质

1.一致性:强调事务的不可分割.
2.原子性:事务的执行的前后数据的完整性保持一致.
3.隔离性:一个事务执行的过程中,不应该受到其他事务的干扰
4.持久性:事务一旦结束,数据就持久到数据库

五种隔离级别

1.Default:使用数据库默认的事务隔离级别
2.Read_uncommited:未提交读,:脏读,不可重复读,虚读都有可能发生
3.Read_conmmited:已提交读,不可重复读,虚读都有可能发生
4.Repeatable_read:可重复读 虚读都有可能发生
5.Serializeble:串化,锁表

七种传播行为

什么是传播行为:当一个事务调用两一个事务时,即A方法调用B方法时,并且A、B方法都具有事务的隔离级别,那么这现象就叫做传播行为。
Spring 支持 7 种事务传播行为(Transaction Propagation Behavior):
(1)必须有事务
PROPAGATION_REQUIRED :如果没有,就开启一个事务;如果有,就加入当前事务(方法B看到自己已经运行在 方法A的事务内部,就不再起新的事务,直接加入方法A)
RROPAGATION_REQUIRES_NEW :如果没有,就开启一个事务;如果有,就将当前事务挂起。(方法A所在的事务就会挂起,方法B会起一个新的事务,等待方法B的事务完成以后,方法A才继续执行)
PROPAGATION_NESTED:如果没有,就开启一个事务;如果有,就在当前事务中嵌套其他事务
PROPAGATION_MANDATORY:如果没有,就抛出异常;如果有,就使用当前事务
(2)事务可有可无
PROPAGATION_SUPPORTS: 如果没有,就以非事务方式执行;如果有,就加入当前事务(方法B看到自己已经运行在 方法A的事务内部,就不再起新的事务,直接加入方法A)
(3)不需要事务
PROPAGATION_NOT_SUPPORTED :如果没有,就以非事务方式执行;如果有,就将当前事务挂起,(方法A所在的事务就会挂起,而方法B以非事务的状态运行完,再继续方法A的事务)
PROPAGATION_NEVER :如果没有,就以非事务方式执行;如果有,就抛出异常。

小计

① 在多线程中配置事务的隔离级别,和传播特性之后,在产生事务挂起的情况时,会产生死锁,这时候需要配置超时时间,以便尽快熔断。
② 在同一个类里面,如果事务A方法通过this调用方法B事务时,在不同的情况下可能会出现,B方法的事务不会被切入进去,这时候可以将这个类暴露出去,在事务A中通过类来来调用事务B。
③ 方法A有事务,方法B没有事务,方法A调用方法B,B加入A的事务中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值