Spring事务管理(一)什么是事务?

1. 事务的概念

什么是事务?

事务必须服从ACID原则。ACID指的是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。
通俗理解,事务其实就是一系列指令的集合。 


-------------------************-------------
事务的4大特性

原子性:事务更改要么全部成功,要么全部失败
一致性:事务提交后,所有数据都必须一致
隔离性:事务之间不能相互影响
持久性:一旦事务更新,对数据库的改变都应该是永久的。

---------------*******----------------------
并发事务的常见问题

脏读:一个事务读到另一个事务未提交的更新数据
不可重复读:事务A读取到了事务B更改的数据
幻读:事务A读取到事务B新增的数据

---------------*******----------------------

spring事务的隔离级别  (针对数据库的,实际就是锁表,锁行)

1.isolation_default 默认的隔离级别 -1
2.isolation_read_uncommitted 允许脏读,重复读和幻读  1
3.isolation_read_committed (保证一个事务修改的数据提交后才能被另一个事务读取到)不允许脏读,重复读,可能出现幻读 2
4.isolation_repeatable_read 可以防止脏读,禁止不可重复读,但是可能出现幻读 4
5.isolation_serializable 可以避免脏读,重复读,幻读,隔离级别最高 8


---------------------------------------------

spring7种事务传播行为 (针对方法间的传播行为)
1.propagation_required  --spring默认的事务传播行为,如果没有,就新建一个,如果有,就加入当前事务(适合绝大多数情况)
2.propagation_requires_new  --如果没有,就新建,如果有,就将当前事务挂起。(新建一个事务和原来的事务没有关系)
3.propagation_nested  --如果没有,就新建,如果有,就嵌入(当主事务提交或回滚,子事务也提交或回滚)
4.propagation_supports  --如果没有,就没有,有就使用当前事务(无所谓,有就用,没有就算了)
5.propagation_not_supported --如果没有,就没有,如果有,就将当前事务挂起(意思就是不支持事务)
6.propagation_never  --如果没有,就没有,如果有,就抛异常(坚决不支持事务)
7.propagation_mandatory  --如果没有,就抛异常,如果有,就使用当前事务(必须要使用事务)


总结:required 新建,requires_new 当前挂机并新建,nested 嵌入
------------------------------------------------

事务超时:transcation timeout   为了解决事务时间太长,消耗资源太多。   事务时间超过最大时长,就回滚
只读事务: readonly transcation  为了忽略那些不需要事务的方法,比如读取数据,这样可以提高效率

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值