Mybatis中的事务原理和自动提交设置 事务的四大特性 不考虑隔离性会产生的3个问题及解决办法

Mybatis中的事务原理和自动提交设置

Mybatis中的事务

什么是事务

事务是指的是一个业务上的最小不可再分单元,通常一个事务对应了一个完整的业务,而一个完整的业务需要批量的DML语句共同联合完成。

事务的四大特性ACID

a:原子性:事务里的内容要么全部成功要么都不成功。

c:一致性:事务前后数据的完整性保持一致,如:a给b转一千块,事务执行以后,a和b的钱总数是一样的。

i:隔离性:隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
  即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。

d:持久性:事务结束,数据就持久化到数据库。

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

脏读:一个事务读到另一个事务未提交的数据。
不可重复读:在一个事务里面读取了两次某个数据,读出来的数据不一致
幻读:在一个事务里面的操作中发现了未被操作的数据

解决办法:四种隔离级别

事务隔离级别:
读未提交:事务未提交的数据可以读。什么问题都解决不了
读已提交:读取已经提交了的数据,可以防脏读,不能防不可重复读和幻读。
可重复读:读一个数据时,上锁。期间不让其他事务做删除修改操作
串行化:直到一个事务的所有子事务全部结束才可以执行下一个事务。

事务提交

Mybatis中的事务是通过sqlsession对象的commit方法和rollback方法实现事务的提交和回滚
走来走去提交和回滚都少不了connection,也就是原来jdbc的操作
在这里插入图片描述
我们在创建sqlsession中设置了提交的方式,所以导致每一次都需要commit
在这里插入图片描述
但是有着一个方法变成自动提交
在这里插入图片描述
只需要改一下就好了
在这里插入图片描述
我们在后面的操作就不需要进行提交操作了
在这里插入图片描述

这样你的@Test依然可以进行
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值