mybatis事物如何避免脏读_MyBatis事务管理

事务是数据库操作的重要概念,MyBatis通过SqlSession的commit和rollback管理事务。本文详细介绍了事务的四大特性ACID,并讨论了不考虑隔离性可能导致的脏读、不可重复读和幻读问题。最后,提出了四种事务隔离级别,包括Read Uncommitted、Read Committed、Repeatable Read和Serializable,以解决这些问题。
摘要由CSDN通过智能技术生成

1、什么是事务

事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。可以理解为:更新数据库中各种数据项的程序执行单元。就比如:同一根绳上的蚂蚱,要活一起活,要死一起死。Mybatis中的事务是通过SqlSession的commit方法和rollback方法实现事务的提交和回滚。

2、事务的四大特性ACID

2.1 原子性(Atomicity)

事务中所有操作是不可再分割的原子单元。事务中所有操作要么都执行成功,要么都执行失败。

2.2 一致性(Consistency)

事务执行后,数据库状态与其他业务规则保持一致。如转账业务,无论事务执行成功与否,参与转账的两个账户余额之和应该保持不变。

2.3 隔离性(Isolation)

隔离性是指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会互相干扰。

2.4 持久性(Durability)

一旦事务提交成功,事务中所有的数据操作都必须被持久化保存到数据库中,即使提交事务后,数据库崩溃,在数据库重启时,也必须能保证通过某种机制恢复数

3、不考虑隔离性会产生的三个问题

3.1 脏读

脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据。

3.2 不可重复读

一个事务两次读取同一行的数据,结果得到不同状态的结果,中间正好另一个事务更新了该数据,两次结果相异,不可被信任。通俗来讲就是:事务T1在读取某一数据,而事务T2立马修改了这个数据并且提交事务给数据库,事务T1再次读取该数据就得到了不同的结果,发送了不可重复读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值