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再次读取该数据就得到了不同的结果,发送了不可重复读