一、Spring五大事务隔离级别
Spring事务隔离级别比数据库事务隔离级别多一个default
在进行配置的时候,如果数据库和spring代码中的隔离级别不同,那么以spring的配置为主。1) DEFAULT (默认)
这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。另外四个与MySQL的隔离级别相对应。2) READ_UNCOMMITTED (读未提交)
这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。3) READ_COMMITTED (读已提交)
保证一个事务修改的数据提交后才能被另外一个事务读取,另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏读出现,
但是可能会出现不可重复读和幻读。4) REPEATABLE_READ (可重复读)
这种事务隔离级别可以防止脏读、不可重复读,但是可能出现幻读。它除了保证一个事务不能读取另一个事务未提交的数据外,
还保证了不可重复读。5) SERIALIZABLE(串行化)
这是花费最高代价但是最可靠的事务隔离级别,事务被处理为顺序执行。除了防止脏读、不可重复读外,还避免了幻读。隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的
隔离级别设为Read Committed。它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、幻读和第二类丢失更新
这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。二、Spring七大事务传播属性
1) required(默认属性)
如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。
被设置成这个级别时,会为每一个被调用的方法创建一个逻辑事务域。如果前面的方法已经创建了事务,那么后面的方法支持当前的事务,
如果当前没有事务会重新建立事务。2) Mandatory
支持当前事务,如果当前没有事务,就抛出异常。3) Never
以非事务方式执行,如果当前存在事务,则抛出异常。4) Not_supports
以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。5) requires_new
新建事务,如果当前存在事务,把当前事务挂起。6) Supports
支持当前事务,如果当前没有事务,就以非事务方式执行。7) Nested
支持当前事务,新增Savepoint点,与当前事务同步提交或回滚。
嵌套事务一个非常重要的概念就是内层事务依赖于外层事务。外层事务失败时,会回滚内层事务所做的动作。而内层事务操作失败并不会引起外层事务的回滚。三、Spring隔离级别与数据库隔离级别联系
spring事务本质上使用数据库事务,而数据库事务本质上使用数据库锁,所以spring事务本质上使用数据库锁,开启spring事务意味着使用数据库锁;事务的隔离级别是通过锁的机制实现的,事务的隔离级别是数据库开发商根据业务逻辑的实际需要定义的一组锁的使用策略。
当我们将数据库的隔离级别定义为某一级别后如仍不能满足要求,我们可以自定义 sql 的锁来覆盖事务隔离级别默认的锁机制。spring事务实际使用AOP拦截注解方法,然后使用动态代理处理事务方法,捕获处理过程中的异常,spring事务其实是把异常交给spring处理;spring事务只有捕获到异常才会终止或回滚,如果你在程序中try/catch后自己处理异常而没有throw,那么事务将不会终止或回滚,
失去事务本来的作用;spring事务会捕获所有的异常,但只会回滚数据库相关的操作,并且只有在声明了rollbackForClassName="Exception"之类的配置才会回滚。spring事务会回滚同一事务中的所有数据库操作,本质上是回滚同一数据库连接上的数据库操作。

Spring的隔离级别事务传播属性数据库隔离级别之间的联系相关推荐

  1. spring 事务隔离级别和传播行为_Java工程师面试1000题146-Spring数据库事务传播属性和隔离级别...

    146.简介一下Spring支持的数据库事务传播属性和隔离级别 介绍Spring所支持的事务和传播属性之前,我们先了解一下SpringBean的作用域,与此题无关,仅做一下简单记录. 在Spring中 ...

  2. Spring事务传播属性和隔离级别

    Spring事务传播属性和隔离级别 一.Spring事务传播属性(Propagation): 1) REQUIRED(默认属性) 如果存在一个事务,则支持当前事务.如果没有事务则开启一个新的事务.  ...

  3. mysql事务传播属性_Spring事务传播属性和隔离级别详细介绍

    1 事务的传播属性(Propagation) 1) REQUIRED ,这个是默认的属性 Support a current transaction, create a new one if none ...

  4. spring事务传播属性与隔离级别

    一.Propagation (事务的传播属性) Propagation : key属性确定代理应该给哪个方法增加事务行为.这样的属性最重要的部份是传播行为. 有以下选项可供使用: PROPAGATIO ...

  5. 你了解过Spring支持的常用数据库事务传播属性和隔离级别吗?来一起看看吧!!!

    上次偶然间看到这个知识点,发现自己有所欠缺,就来进行查漏补缺,没法实在是卷的厉害啊.

  6. Spring事务管理amp;数据库隔离级别

    一.spring事务管理 1. 什么是事务 事务(Transaction)是多个操作数据库的步骤(CRUD)的集合,是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可 ...

  7. 数据库 - 事务管理(ACID)隔离级别 事务传播行为

    转载自   数据库 - 事务管理(ACID)隔离级别 事务传播行为 总览: 事务的4大特性(ACID) 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前 ...

  8. 事物的级别_实战分析:事务的隔离级别和传播属性

    什么是事务? 要么全部都要执行,要么就都不执行. 事务所具有的四种特性 原子性,一致性,隔离性,持久性 原子性 个人理解,就是事务执行不可分割,要么全部完成,要么全部拉倒不干. 一致性 关于一致性这个 ...

  9. Spring事务传播属性有那么难吗?看这一篇就够了

    点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:不学无数的程序员 juejin.im/post/5da6eee2f265da5bb9 ...

最新文章

  1. c++ 私有内部类_C++类成员的访问权限以及类的封装
  2. python学起来难吗-python学起来难吗
  3. python笔记之正则表达式
  4. android xml获取指定,android:如何从xml文件中获取信息?
  5. 哈希值+非对称加密+网络+数字签名,你真的知道怎么给游戏充钱吗
  6. 常用的python模块
  7. C语言---数字迷宫
  8. 架构之美—需求审核直接影响设计成败(2)
  9. 专访 | 阿里前辈李智慧:如何培养架构思维,我把20年的架构经讲给你听
  10. 在虚幻引擎5中构建你的首款游戏 - 03 - 模型和材质蓝图
  11. Web前端开发师必备的8个工具
  12. 什么是主数据?什么是主数据管理系统?
  13. 百度地图获取某个城市的经度纬度
  14. 利用IPv6的地址特性写一个攻击甩锅程序
  15. 啤酒与尿布的蝴蝶效应——关联分析
  16. X64dbg脚本实现自动DUMP运行中解密出的PE文件
  17. Word图片无法置于文字上方解决方法
  18. 基于高德地图的交通数据分析
  19. cocos creator休闲游戏甜品幻想H5+安卓+IOS三端源码开发脚本为javaScript
  20. OpenNI2的下载与安装

热门文章

  1. [机器学习] 奇异谱分析(SSA)原理及Python实现
  2. php入门数组和基本增删改查的sql资料
  3. 新闻数据分析:jieba关键词提取、LDA主题生成、贝叶斯新闻分类
  4. 常见安全服务(基线加固、风险评估、应急响应、渗透测试、代码审计、重保)介绍
  5. LG-CF6D Lizards and Basements 2
  6. android 手势监听案例
  7. 别人发过来的压缩包打开后,文件夹名有一部分是乱码的解决办法
  8. 学生网页成品展示 静态HTML网页设计制作技巧 dreamweaver作品展示2022.3期
  9. Ceph架构组件及存储过程
  10. 将来你有小孩了,用几句简单的语录教育他们