同一个事务里面对同一条数据做2次修改_Spring事务管理,快速入门

本文介绍了数据库事务中的脏读、不可重复读和幻读现象,并详细阐述了事务的ACID特性。接着,讨论了Spring的四种事务隔离级别及其在不同场景下的应用。此外,还探讨了Spring的事务传播机制,包括PlatformTransactionManager接口及其实现。文章通过示例说明了如何在代码和注解中使用Spring事务管理,确保数据一致性。最后,提到了如何将@Transactional注解应用于第三方框架,如RabbitMQ的事务管理。
摘要由CSDN通过智能技术生成
70d75346a67ba223238d179259143014.png

原创: 微笑面对生活


说起事务,大家应该多多少少用过,尤其是在一个service方法中调用多次dao操作,我们一定要用到事务( @Transational注解),那么这个事务的默认隔离级别和传播机制是什么呢?

先来讲讲 脏读 不可重复读 和 幻读。

  1. 脏读:我们在并发编程中是很熟悉的,通俗的讲就是你读得数据已经被修改了,已经过时失去意义了。
  2. 不可重复读: 同一个事务里面多次读取同一行数据,却返回不同的结果。
  3. 幻读:同样一笔查询在整个事务过程中多次执行后,查询所得的结果集不一样。

事务四大特性 ACID

1. 原子性 (Atomicity)

要求事务所包含的全部操作是一个不可分割的整体,如果有一步发生异常,则全部不提交。

2. 一致性 (Consistency)

A给B转钱,A减和B增这两个操作必须保持一致。

3. 隔离性 (Isolation)

事务会将一部分数据与其他事务隔离,防止脏读等。

4. 持久性 (Durability)

事务的结果被写到持久化存储器中。

事务四大隔离级别

隔离级别越高,则性能相对越低,反之亦然。1. Read Uncommitted最低的隔离级别,跟你直译的意思一样:可以读取其它事务未完成的结果。(脏读)

很明显, 脏读 不可重复读 和 幻读这三个问题它都有。

2. Read Committed

大部分数据库采用的 默认隔离级别,比上一个隔离级别多了限定:在该事务完成后,才能读取该事务的数据更新后的结果。

它可以避免脏读,但是也有不可重复读取和幻读的问题。

3. Repeatable Read</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值