小村村长

导航

Spring 事务

1.事务隔离级别:

事务:逻辑上的一组操作要么同时成功,要么同时失败;
特性:原子性,一致性,隔离性,持久性
在不考虑隔离性的前提下,事务存在如下问题:
 ​ 脏读: 一个事务读取到了另一个事务中尚未提交的数据
​  不可重复度: 一个事务中两次读取的数据内容不一致,要求的是一个事务中多次读取时数据是一致的,这是事务**update**时引发的问题
​  虚读,幻读: 一个事务中两次读取的数据的数量不一致,要求在一个事务多次读取的数据的数量是一致的,这是**insert或delete**时引发的问题
---------
解决:设置隔离级别
​ Read unCommitted :什么都解决不了
​ Read committed :解决脏读 Oracle
​ Repeatable Read :解决脏读和不可重复读 Mysql
​ Serializable :解决所有但是不用
一般使用默认值

2.超时时间:

使用默认值 -1

意思为,什么时候执行完,什么时候提交或回滚事务

3.事务的传播行为:

REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。一般的选择(默认值) 解决增删改 SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务) 针对查询

简单来说:在【同一个业务】当中【后者是否需要事务】,【前者有没有事务】,有就加进去玩,没有,如果我需要就自己开一个事务,如果不需要就以非事务执行

4.是否是只读事务

只读事务 :对查询有效(查询)

非只读事务 :对增删改有效(增删改)

readOnly :true(只读事务)或 false(非只读事务)

重要★★:

增删改操作配置:

传播行为:REQUIRED

是否只读:false

查询操作配置:

传播行为:SUPPORTS

是否只读:true

posted on 2022-02-09 23:47  小村村长  阅读(42)  评论(0编辑  收藏  举报