简介:网上关于Spring事务传播性以及隔离型的文章漫天盖地,还有不负责任的直接复制名词意思,文章虽然很多却是看的云里雾里,我们今天将给出案例分别和大家一起学习。

网上关于Spring事务传播性以及隔离型的文章漫天盖地,还有不负责任的直接复制名词意思,文章虽然很多却是看的云里雾里,我们今天将给出案例分别和大家一起学习。

1、spring给出经常面试的考点Spring事务的4个特性含义---这个很容易理解

2、spring事务传播特性的定义以及案例分析

一、事务的特性ACID

这四个英文单词拼写我一直记不住,求记忆方法

  • 原子性(Atomicity):事务是一系列原子操作,要么全部成功,要么全部失败。
  • 一致性(Consistency):一旦完成(不管是成功还是失败),确保它所在的一系列业务状态保持一致,状态都是成功,或者都是失败,不能一部分成功一部分失败。
  • 隔离性(Isolation):不同事务同时进行某项业务,处理相同的数据时候,需要保证事务之间相互独立,互相之间数据不影响。
  • 持久性(Durability):一旦事务完成,无论发生什么系统性错误,事务执行后的数据都被持久化了,不会因为重启或其他操作对数据进行更改。

二、spring事务传播特性的定义以及案例分析

我们先给出定义再分别进行简单的代码分析

给出百度图片,请大家参考,首先生命力如果想在工程中运用事务spring 的xml必须开启事务,以下这些特性一般都是在xml属性中进行配置。

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

类似这种的配置一定要有,否则万事具备只欠东风,这个是DB事务有JTA和JPA以及Herbernate等,这里就不展开说明,可自行百度。

三、案例解析事务传播7大行为

1、无事务,这个时候id 为16的第一次插入成功,第二次插入的时候失败,库中留存第一次的数据

无事务运行

2、propagation_required,默认事务的传播行为required,在进行实验2的时候将表中id为16的数据先删除以免影响接下来的测试。@Transactional(propagation=Propagation.REQUIRED) == @Transactional这两个的作用是一样的没有事务创建一个事务执行,

![
qq'q](http://college.creditease.cn/resources/upload/image/20200804/1596529605681003338.jpeg)
事务的传播特行为为required
结果是因为主键冲突将事务进行了回滚,所以两条数据都没有插入进去。

3、propagation_supports,如果当前程序存在事务就加入该事务运行,如果不存在事务则在非事务中运行

事务的传播行为性为supports
因为调用方未用事务那么就在非事务中运行,所以插入了first的第一条数据。

4、propagation_mandatory,必须在一个事务中运行,否则就会抛出异常mandatory 这个单词有强制性的意思我们默认用required 而不用mandatory,是因为mandatory不能自动创建事务。

事务的传播行为为manatory
因为调用的外层没有事务,所以两条数据没有插入。大家想想下面这种写法会发生什么现象

事务的传播行为mandatory

5、propagation_ required _new,不管事务是不是存在,都会另起一个事务,如果事务存在则将当前事务挂起,重新执行新加的事务

事务的传播行为required_new
结果和require一样,两条数据都没有入库,唯一健冲突导致第一条数据回滚,大家可以思考下我下面这两种情况。

情景1新起的事务抛出异常会不会让外围事务回滚?

情景2外围事务失败会不会导致新起事务已提交的回滚?

6、 propagation_ not _support,表示不在事务中运行,如果当前存在事务则将事务挂起

![qqq
](http://college.creditease.cn/resources/upload/image/20200804/1596529886418082560.jpeg)
事务的传播行为not_suppoted
这种情景下,如果你根据我的思路一步走的应该可以想到id 为17的入库,第二条主键冲突虽然然而notSupportSonTransationsl()这个方法没有事务所以不影响第一条入库情况,但是外围事务id为16的要进行回滚了,所以库中只有一条数据id=17的。

7、 propagation_never,表示当前方法不能运行在事务当中,如果有事务则会抛出异常---->Existing transaction found for transaction marked with propagation 'never'

事务的传播行为NEVER

8、 propagation_nested,这种嵌套的事务,外围如果没有事务则自己另起一个事务,可独立与外围事务进行单独的提交或者回滚(这句话不要理解错了),下面这个案例同样的数据一条也没有落入库中,

事务的传播行为nested

事务的传播行为级别简单的演示完毕

作者:宜信技术学院,王巧敏

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

事务隔离级别和传播行为_?Spring事务的传播行为案例分析相关推荐

  1. 事务隔离级别脏读幻读_脏读和未提交读隔离级别

    事务隔离级别脏读幻读 In this article, we will discuss the Dirty Read concurrency issue and also learn the deta ...

  2. MYsql隔离级别问题和解决方案,Spring的七大传播机制

    读未提交:所有在buffer pool 的数据可见 读已提交:会发生前后读到的数据不一致:解决方案:加行锁的共享锁(读锁)MVCC,查到行记录的事务结束id不为空的数据. 可重复读:会引起幻读,前面查 ...

  3. 什么是事务、事务特性、事务隔离级别、spring事务传播特性

    1.什么是事务: 事务是指程序中的一个操作序列.其特点是:该序列的所有操作要么全部成功完成,要么只要有一个操作失败,则该序列所有操作都将被撤销.这也是事务的原子性(要么成功,要么失败). 2.事务特性 ...

  4. spring事务隔离级别、传播行为以及spring+mybatis+atomikos实现分布式事务管理

    1.事务的定义:事务是指多个操作单元组成的合集,多个单元操作是整体不可分割的,要么都操作不成功,要么都成功.其必须遵循四个原则(ACID). 原子性(Atomicity):即事务是不可分割的最小工作单 ...

  5. 事务,Oracle,MySQL及Spring事务隔离级别

    一.什么是事务:  事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. 二.事务特性(4种):  原子性 (atomicity):强调事务的不可分割: 一致性 (consi ...

  6. MySQL事务隔离级别和Spring事务关系介绍

    事务隔离级别介绍 隔离级别 脏读 不可重复读 幻读 未提交读(Read uncommitted) 可能 可能 可能 已提交读(Read committed) 不可能 可能 可能 可重复读(Repeat ...

  7. Spring事务隔离级别与数据库隔离级别不一致时,该以谁为准?

    原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重. 前言 通过本篇,你将了解到[Spring事务]与[数据库事务]的关系,以及优先级问题,我将为你一一论证. 阅读本篇,你可能会需要的博文: ...

  8. 【事务隔离级别和传播机制】

    事务隔离级别和传播机制是关于事务的两个重要概念,下面分别进行介绍: 事务隔离级别: 在数据库中,事务隔离级别是指多个事务之间相互隔离的程度.常见的事务隔离级别有四个,从低到高依次是: 读未提交(Rea ...

  9. 数据库事务隔离级别+Spring 声明性事务隔离级别

    数据库事务隔离级别 数据库提供了四种事务隔离级别, 不同的隔离级别采用不同的锁类开来实现. 在四种隔离级别中, Serializable的级别最高, Read Uncommited级别最低. 大多数数 ...

最新文章

  1. BAT看上了产业互联网
  2. python和java一样吗-python 和 java 的区别
  3. 实验Matlab数值运算,MATLAB数值实验一(数据的插值运算及其应用完整版
  4. boost::hana::remove_at用法的测试程序
  5. php cdi_CDI和EJB:在事务成功时发送异步邮件
  6. 数据质量 开源框架_Netflix开源Polynote框架,可简化数据科学和机器学习工作流程...
  7. MTK平台性能优化---(1)综述
  8. python opencv 直方图均衡化_Python opencv—直方图/直方图均衡化/直方图比较,pythonopencv...
  9. 单循环链表(用尾指针表示)
  10. 条件控制语句 以及 循环语句
  11. 私塾在线《深入浅出学 Hadoop- 初级 部分》
  12. 排序算法-归并排序详细讲解(MergeSort)
  13. 基于Sklearn实现LDA算法
  14. SPSS26没有典型相关性分析怎么办
  15. 趣图:新手程序员 vs 高级程序员
  16. c(RGDyC),cyclo(Arg-Gly-Asp-D-Tyr-Cys),环状RGD多肽系列
  17. 安卓代替苹果的软件_苹果健身可以代替您的健身房或贵宾会员吗
  18. (转)DEDECMS模板原理、模板标签学习 - .Little Hann
  19. N-Tiers设计系列(一):传统Asp运作方式
  20. USB over Network通过本地网络或 Internet 共享的远程 USB 设备

热门文章

  1. php手势解锁,微信小程序实用demo:手势解锁(适用1221)
  2. mono for android mysql_unity跨平台sqlite使用教程
  3. 自相关-能量密度谱,互相关-互能量密度谱,系统识别
  4. autodock无map文件_“分子对接技术”之使用AutoDock进行半柔性对接教程
  5. [No0000A3]护眼谎言大揭秘,选择正确的方式保护眼睛!
  6. 在审批工作流中处理NetSuite拒绝原因的好方法
  7. li 一行2个图会错乱_2分钟做出的Excel复合饼图,简洁又美观、数据更清晰!
  8. 客户管理系统,电销企业应该怎么选?
  9. [daily][device][archlinux][trackpoint] 修改指点杆速度/敏捷度
  10. np 元素位置_证明SAT的NP完全性(NP-completeness)