一、spring事务:

spring针对事务的解决方案,在基础的隔离性基础上,又增加了事务传播行为、只读事务、事务超时的机制。

二、事务传播:

其实就是两个事务传播。

1、方法A有事务、方法B没有事务;

2、方法A有事务、方法B有事务;

3、方法A没有事务、方法B有事务;

4、方法A没有事务、方法B没有事务;

对应的有7中方式,4种对应上面的,3种特殊的。比如方法A的事务,

  1. 如果没有,就开启一个事务;如果有,就加入当前事务(方法A加入到方法B)。这就是 PROPAGATION_REQUIRED,它也是 Spring 提供的默认事务传播行为,适合绝大多数情况。
  2. 如果没有,就开启一个事务;如果有,就将当前事务挂起。这就是 RROPAGATION_REQUIRES_NEW,意思就是创建了一个新事务,它和原来的事务没有任何关系了。
  3. 如果没有,就开启一个事务;如果有,就在当前事务中嵌套其他事务。这就是 PROPAGATION_NESTED,也就是传说中的“嵌套事务”了,所嵌套的子事务与主事务之间是有关联的(当主事务提交或回滚,子事务也会提交或回滚)。
  4. 如果没有,就以非事务方式执行;如果有,就使用当前事务。这就是 PROPAGATION_SUPPORTS,这种方式非常随意,没有就没有,有就有,有点无所谓的态度,反正我是支持你的。
  5. 如果没有,就以非事务方式执行;如果有,就将当前事务挂起。这就是 PROPAGATION_NOT_SUPPORTED,这种方式非常强硬,没有就没有,有我也不支持你,把你挂起来,不鸟你。
  6. 如果没有,就以非事务方式执行;如果有,就抛出异常。这就是 PROPAGATION_NEVER,这种方式更猛,没有就没有,有了反而报错,确实够牛的,它说:我从不支持事务!
  7. 如果没有,就抛出异常;如果有,就使用当前事务。这就是 PROPAGATION_MANDATORY,这种方式可以说是牛逼中的牛逼了,没有事务直接就报错,确实够狠的,它说:我必须要有事务!

三、spring事务其他特性:

Spring 给我们带来了事务传播行为,这确实是一个非常强大而又实用的功能。除此以外,也提供了一些小的附加功能,比如:

  1. 事务超时(Transaction Timeout):为了解决事务时间太长,消耗太多的资源,所以故意给事务设置一个最大时常,如果超过了,就回滚事务。
  2. 只读事务(Readonly Transaction):为了忽略那些不需要事务的方法,比如读取数据,这样可以有效地提高一些性能。

四:总结:

事务学习总结(2)——spring事务相关推荐

  1. 布式事务实践 解决数据一致性 Spring事务机制

    Spring事务机制 介绍Spring的事务机制.事物抽象.内部事务和外部事物,以及常用的几种事务管理的实现,包括DataSource.JPA.JMS.JTA都通过实例进行说明.还有XA以及两阶段提交 ...

  2. mysql与spring隔离级别不同_mysql事务隔离级别与spring事务隔离级别的区别

    mysql事务隔离级别与spring事务隔离级别的区别: 脏读:为什么会出现脏读,因为你对数据库的任何修改都会是立即生效的,至于别人能不能看到主要取决与你 是否加锁了,数据库的执行与事务没有关系,事务 ...

  3. 学习笔记(Spring事务管理)

    maven中导入的依赖 学习时时候用的,所以就用的spring提供的orm组件 <dependencies><!--springioc--><dependency> ...

  4. 【Spring学习34】Spring事务(4):事务属性之7种传播行为

    事务传播行为 什么叫事务传播行为?听起来挺高端的,其实很简单. 即然是传播,那么至少有两个东西,才可以发生传播.单体不存在传播这个行为. 事务传播行为(propagation behavior)指的就 ...

  5. 数据库事务原理详解-Spring 事务的传播属性

    所谓spring 事务的传播属性,就是定义在存在多个事务同时存在的时候,spring 应该如何处理这些事务的行为.这些属性在TransactionDefinition 中定义,具体常量的解释见下表: ...

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

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

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

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

  8. Spring事务管理一:Spring事务管理的优点

    (翻译自spring-framework-reference.pdf 第四章 Data Access) 通常情况下,J2EE有2种事务管理方式:全局事务和本地事务,2种事务都比较明显的缺陷. 全局事务 ...

  9. java spring 事务传播_实战Spring事务传播性与隔离性

    一.事务传播性 1.1 什么是事务的传播性 事务的传播性一般在事务嵌套时候使用,比如在事务A里面调用了另外一个使用事务的方法,那么这俩个事务是各自作为独立的事务执行提交,还是内层的事务合并到外层的事务 ...

  10. JDBC事务和JTA事务的区别 --包含spring事务 声明式事务

    2019独角兽企业重金招聘Python工程师标准>>> 一.事务概述 事务表示一个由一系列的数据库操作组成的不可分割的逻辑单位,其中的操作要么全做要么全都不做. 与事务相关的操作主要 ...

最新文章

  1. java高级规范_Java高级规范之二
  2. Codeforces 977D: Divide by three, multiply by two(暴力)
  3. odoo10参考系列--ORM API 三(字段、继承与扩展、域和更新到新API)
  4. 2018.3.12 Leecode习题 给定一个整数数列,找出其中和为特定值的那两个数。
  5. python epoll多路复用技术_python网络编程——IO多路复用之epoll
  6. linux中副规则_linux中命名规则_学习笔记
  7. opencv摄像头捕获视频
  8. 闲谈IPv6-IPv4的TCP和NAT让互联网变得畸形
  9. 如何在php文件中插入图片,使用PHPWord读取Word文件并插入图片
  10. item在python中什么意思_Python中使用item()方法遍历字典的例子
  11. 【pyqt5学习】——添加菜单栏动作action,给动作触发triggered绑定事件
  12. 【HDL系列】Brent-Kung树形加法器原理与设计
  13. rrpp协议如何修改_RRPP快速环网保护协议
  14. 计算机老师新年贺卡祝福语,新年贺卡祝福语老师大全
  15. 怎么给图片添加水印?教你一个图片加水印小妙招
  16. 中国天气网爬虫数据可视化
  17. CSS中position属性(relative,absolute,fixed)和display中的inline-block
  18. VC++常用功能开发汇总
  19. 好用的磁盘清理软件Disk Diet for mac安装教程及功能介绍
  20. 【深度学习人类语言处理】1 课程介绍、语音辨识1——人类语言处理六种模型、Token、五种Seq2Seq Model(LAS、CTC、RNN-T、Neural Transducer、MoChA)

热门文章

  1. dataGrid列比较多内容显示不全的扩展
  2. MySQL中处理Null时要注意两大陷阱
  3. HUT-1694 零用钱 贪心
  4. 职场七种最致命的想法
  5. iphonexr电池容量_初代手机到iPhone 12,从电池容量变化看充电功率的发展
  6. java下载进度怎样判断_Java获得下载进度
  7. Spring Boot+Maven将配置文件打包到Jar包外方便运维修改配置
  8. Go 切片使用绕坑指南
  9. 如何在html中编写scss,编写Sass的八个技巧
  10. Spring循环依赖源码剖析