Spring 事务管理笔记

事务的特性

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

事务的隔离级别

READ_UNCOMMITTED

已读但未提交,即一个事务读取到了另一个事务未提交的数据。在这种隔离级别下,会造成”脏读“的情况

READ_COMMTTED

在这个隔离级别下,可以有效避免“脏读”情况的发生。虽然解决了不可重复读的问题,但是在这个隔离级别下无法避免不可重复读取的问题。

RREPEATABLE_READ

可重复读级别是保证在事务处理过程中多次读取同一个数据时的值始终是一致的。可重复读取是通过在事务开启后不允许其他事务对当前记录进行修改操作实现的。
这个隔离级别避免了“脏读”和不可重复读的问题,但是有可能会出现“幻读”。

SERIALIZABLE

顺序读是最严格的事务隔离级别。它要求所有的事务排队依序执行,即事务只能一个接一个地处理,不能并发执行。

事务隔离级别脏读不可重复读幻读
READ_UNCOMMITTEDYYY
READ_COMMTTEDNYY
RREPEATABLE_READNNY
SERIALIZABLENNN

4种事务隔离级别, 从上往下,级别越高,安全性越高, 并发性越差。

Spring 事务隔离级别

事务隔离级别脏读不可重复读幻读
ISOLATION_DEFAULT同数据库事务隔离级别同数据库事务隔离级别同数据库事务隔离级别
ISOLATION_READ_UNCOMMTTEDYYY
ISOLATION_READ_COMMTTEDNYY
ISOLATION_REPEATABLE_READNNY
ISOLATION_SERIALIZABLENNN

Spring 事务传播行为类型

事务传播行为类型说明
PROPAGATION_REQUIRED如果当前没有事务,就新建一个事务,如果已经存在一个事务,就加入到这个事务
PROPAGATION_SUPPORTS支持当前事务,如果当前没有事务,就以非事务方式执行
PROPAGATION_REQUIRES_NEW新建事务. 如果当前存在事务,就把当前事务挂起
PROPAGATION_NOT_SUPPORTED以非事务方式执行。如果当前存在事务,则爆出异常
PROPAGATION_NESTED如果当前存在事务,则在嵌套事务内执行,如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。与PROPAGATION_REQUIRES_NEW 的差别是PROPAGATION_REQUIRES_NEW是另起一个事务,将会与其父事务相互独立。 PROPAGATION_NESTED事务和其父事务是相依的,其要等父事务一起提交

笔记来自与Spring 5企业级开发实战

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值