前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis中的事务原理和自动提交设置 事务的四大特性 隔离性会产生的3个问题及解决办法

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

原创
作者头像
韦恩少爷的背
修改2020-02-24 18:18:28
2.4K0
修改2020-02-24 18:18:28
举报
文章被收录于专栏:SSM框架学习SSM框架学习

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

Mybatis中的事务

什么是事务

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

事务的四大特性ACID
代码语言:javascript
复制
a:原子性:事务里的内容要么全部成功要么都不成功。

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

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

d:持久性:事务结束,数据就持久化到数据库。
不考虑隔离性会产生的3个问题

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

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

Mybatis中的事务是通过sqlsession对象的commit方法和rollback方法实现事务的提交和回滚 走来走去提交和回滚都少不了connection,也就是原来jdbc的操作

在这里插入图片描述
在这里插入图片描述

我们在创建sqlsession中设置了提交的方式,所以导致每一次都需要commit

在这里插入图片描述
在这里插入图片描述

但是有着一个方法变成自动提交

在这里插入图片描述
在这里插入图片描述

只需要改一下就好了

在这里插入图片描述
在这里插入图片描述

我们在后面的操作就不需要进行提交操作了

在这里插入图片描述
在这里插入图片描述

这样你的@Test依然可以进行

在这里插入图片描述
在这里插入图片描述

注意:这用的不多,每次执行一个对数据库的CRUD操作可以用这个,如果一个方法里面多次和数据库进行交互,如果每个连接处于独立的连接中,这个事务是控制不住的(spring中会详细分析

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mybatis中的事务原理和自动提交设置
    • Mybatis中的事务
      • 事务提交
  • 注意:这用的不多,每次执行一个对数据库的CRUD操作可以用这个,如果一个方法里面多次和数据库进行交互,如果每个连接处于独立的连接中,这个事务是控制不住的(spring中会详细分析
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档