spring事务的默认隔离级别_事务隔离级别有哪些

spring事务的默认隔离级别_事务隔离级别有哪些目录1、前言2、验证结论3、总结1、前言事务的四个隔离级别想必大家都已经清楚,但是在学习Spring的时候,我们发现Spring自己也有四个隔离级别(加上默认的是五个)。那么问题来了,当Spring设置的隔离级别和我们在数据库设置的隔离级别不一致时,哪个会生效?先抛出结论:Spring设置的隔离级别会生效2、验证结论要验证结论很简单,我们只需要在spring事务注解上面配置不同的隔离级别就行了:DAO层实现类的两个方法pay方法是模拟事务A先查询一次数据,然后休眠两秒再查询一次数据

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1、前言

事务的四个隔离级别想必大家都已经清楚,但是在学习Spring的时候,我们发现Spring自己也有四个隔离级别(加上默认的是五个)。

那么问题来了,当Spring设置的隔离级别和我们在数据库设置的隔离级别不一致时,哪个会生效?

先抛出结论:

Spring设置的隔离级别会生效

2、验证结论

要验证结论很简单,我们只需要在spring事务注解上面配置不同的隔离级别就行了:

DAO层

在这里插入图片描述

实现类的两个方法

pay方法是模拟事务A先查询一次数据,然后休眠两秒再查询一次数据
在这里插入图片描述

pay1方法则是先休眠一秒,等事务A执行第一次查询后,更新数据,等事务A执行第二次查询,然后回滚数据

在这里插入图片描述

运行代码
在这里插入图片描述
主方法使用两个线程运行这两个方法(请忽略pay方法参数,我这是方便CV……)

结果如下,发生了脏读!

在这里插入图片描述

3、总结

我们知道,MySQL默认的隔离级别是REPEATABLE-READ,在这个级别下是不可能发生脏读的。但是在刚才的测试中却出现了脏读,这证明我们的结论是正确的,spring开启事务时,拿到的当前连接,会对当前会话设置事务隔离级别。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194146.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 刷题方案

    刷题方案

  • 在目录下打开命令行_如何用命令行打开文件夹

    在目录下打开命令行_如何用命令行打开文件夹用命令行打开指定目录。基本指令nautilus+路径命令可以在ubuntu上直接打开此路径的目录。如nautilus~/workspace/。打开win格式的路径在Windows上的路径为反斜线\,在ubuntu命令行是无法识别的,此时需要将\转换为/。使用sed命令可以自动转换。以下命令可以打开/home/eric.cai/Workspace/目录:nautilus$(echo’\home\eric.cai\Workspace’|sed‘s+\\+/+g’)写成

    2022年10月15日
  • 基于Java+SpringBoot+vue+elementui社区疫情防控系统详细设计实现

    基于Java+SpringBoot+vue+elementui社区疫情防控系统详细设计实现主要功能设计:查看首页、个人中心、用户管理、返乡报备管理、外出报备管理、投诉信息管理、体温上报管理、商品代买管理、商品配送管理、社区论坛、系统管理等内容进行详细操作。

    2022年10月21日
  • 一叶知秋,一个 LED 就能入门 Linux 内核「建议收藏」

    一叶知秋,一个 LED 就能入门 Linux 内核「建议收藏」简单点灯最近项目上需要用到LED子系统,在嵌入式Linux里面点个灯还是比较简单的,只要在某个灯对应的目录里,向相应文件写入特定值,就可以让LED亮/灭/闪烁。#echo1>/sys/class/leds/green/brightness//点亮LED#echo0>/sys/class/leds/green/brightness//熄灭LED#echoheartbeat>/sys/class/leds/green/trigger//

  • ubuntu最小化窗口命令(ubuntu界面怎么变大)

    窗口相关快捷键最大窗口win+↑最小化窗口win+↓隐藏窗口win+H窗口放左边win+←窗口放右边win+→修改快捷键位置Setting->Device->Keyboard

  • sql怎么调用存储过程_oracle sql分页查询

    sql怎么调用存储过程_oracle sql分页查询数据库用的是Oracle,Mybatis自动封装的分页,sql语句在PLSQL中执行没有问题,放在代码里面运行的时候就报错:未明确定义列。通过log打印的sql语句拷出来执行,发现嵌套上分页就会报错。问题原因:sql语句中有个列的别名重复,导致嵌套了分页后,数据库不能确定我们要的到底是哪个列,就会报未明确定义列。网上还有网友说的其他原因大家可以参考,比如

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号