网上关于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这两个的作用是一样的没有事务创建一个事务执行,

事务的传播特行为为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,表示不在事务中运行,如果当前存在事务则将事务挂起

事务的传播行为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_Spring事务的传播行为案例分析相关推荐

  1. ​Spring事务的传播行为案例分析

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

  2. spring 事务隔离级别和传播行为_Spring事务的传播行为案例分析

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

  3. 事务隔离级别和传播行为_?Spring事务的传播行为案例分析

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

  4. Spring JDBC-实施Spring AOP事务注意事项及案例分析

    实施SpringAOP事务注意事项 基于接口动态代理的AOP事务增强 基于CGLib字节码动态代理的AOP事务增强 示例 特别说明 示例源码 实施SpringAOP事务注意事项 众所周知,Spring ...

  5. 【系统分析师之路】2010年系统分析师下午案例分析真题

    [系统分析师之路]2010年系统分析师下午案例分析真题 系统分析师下午案例分析真题 [系统分析师之路]2010年系统分析师下午案例分析真题 2010年系统分析师下午案例分析第一题(需求工程) 1. 我 ...

  6. MATLAB神经网络43个案例分析【第14/15章源程序不能正常运行——一种道听途说的解决办法】

    鄙人在下载并运行<MATLAB神经网络43个案例分析>随书附带的源程序时发现,chapter14文件夹中的chapter_WineClass.m文件并不能正常运行.命令行窗口出现了如下警告 ...

  7. spring事务的传播机制新解

    以下是事物的传播机制: @Transactional(propagation=Propagation.REQUIRED) 如果有事务, 那么加入事务, 没有的话新建一个(默认情况下) @Transac ...

  8. 什么是事务的传播_这么漂亮的Spring事务管理详解,你不来看看?

    事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用 ...

  9. 事务的传播行为和隔离级别[transaction behavior and isolated level]

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

最新文章

  1. 多线程(一、线程安全案例)
  2. java多线程 --ConcurrentLinkedQueue 非阻塞 线程安全队列
  3. C指针原理(40)-递归(1)
  4. 这个微型机器人可以在人体内“游泳”
  5. mysql开启事务_MySQL入门之事务(上)
  6. w3c的html4.0规范,W3C HTML4.0学习
  7. idea xml文件引入类提示_IntelliJ IDEA:引用XML模式和DTD
  8. php 根据输入值读取MySQL_MySQL输入PHP给出的另一个值
  9. 面向.NET开发人员的Dapr——服务调用
  10. cloud foundry_使用“另类” Cloud Foundry Gradle插件无需停机
  11. 一个实时精准触达系统的自我修养
  12. C++ 类的深拷贝和浅拷贝完美解决
  13. python表达式3and not5的值_表达式 3 and 5 的值为_学小易找答案
  14. 【2010】asp.net GridView分页的实现
  15. NTKO OFFICE文档控件技术资料(转载)
  16. css的font修改颜色,css的font字体颜色如何设置
  17. MATLAB常见问题:小数保留有效数字位数相关问题/除法结果问题/数据显示格式设置
  18. 3812 机器人走迷宫(枚举 + 全排列)
  19. 基于android的汽车租赁系统app
  20. 读书笔记-精准努力-思考时间和精力的分配

热门文章

  1. 腾讯DCI网络SDN SR-TE方案详解
  2. nginx源码初读(1)--让烦恼从数据结构开始(ngx_cdecl/ngx_int/ngx_log)
  3. servlet的线程安全性问题
  4. 大剑无锋之你了解HTTPS吗?那么它为什么安全?【面试推荐】
  5. java基础----递归
  6. 【NoSQL】NoSQL入门和概述 - 笔记
  7. Hyperledger Fabric基础知识
  8. Lombok常用注解和功能
  9. Effective Java之避免使用受检的异常(五十九)
  10. activemq的使用(四)