spring事务的传播
1.spring事务的传播
为什么会有传播机制
spring对事务的控制,是使用aop切面实现的
场景一:A调用B,都有事务,B异常,让B提交还是两个一起回滚
场景二:A调用B,A有事务,是够让B加入事务控制,B异常,A是否回滚
场景三:A调用B,都有事务,B执行完成,A有异常,B是否回滚
传播机制的生效条件
由于spring是使用aop来代理事务控制的,是针对于接口或类的,所以在同一个service类中两个方法调用,传播机制是不生效的
事务传播的类型
REQUIRED(默认)
支持当前事务,如果当前没有事务,则新建事务
如果当前存在事务,则加入当前事务,合并成一个事务
子事务回滚,父事务一定回滚;父事务回滚,子事务一定回滚
REQUIRES_NEW
新建事务,如果当前存在事务,则把当前事务挂起
这个方法会独立提交事务,不受调用者的事务影响,父级异常,它也会正常提交
NESTED
如果当前存在事务,它将会成为父级事务的一个子事务,方法结束后并没有提交,只有等父事务结束才提交
如果当前没有事务,则新建事务
如果它异常,父级可以捕获它的异常而不进行回滚,正常提交
但如果父级异常,它必然回滚,这就是和REQUIRES_NEW的区别
NOT_SUPPORTED
以非事务方式运行
如果当前存在事务,则把当前事务挂起
MANDATORY
如果当前存在事务,则运行在当前事务中
如果当前无事务,则抛出异常,即父级方法必须要有事务
NEVER
以非事务方式运行,如果当前存在事务,则抛出异常,即父级方法必须无事务
spring事务的传播相关推荐
- 面试官:Spring事务的传播行为有几种?
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:程序员入职国企,1周上班5小时,晒出薪资感叹:腾讯当CEO也不去个人原创+1博客:点击前往,查看更多 在Spri ...
- spring手动控制事务开启_“上帝视角”图解Spring事务的传播机制原理
转载:https://mp.weixin.qq.com/s/odP1DKgRtXsCcAKxwGahug 数据库事务的"抓手" 数据库的事务功能已经由数据库自身实现,它留给用户的就 ...
- 数据库事务原理详解-Spring 事务的传播属性
所谓spring 事务的传播属性,就是定义在存在多个事务同时存在的时候,spring 应该如何处理这些事务的行为.这些属性在TransactionDefinition 中定义,具体常量的解释见下表: ...
- Spring事务的传播机制
spring事务的传播机制 1.spring事务 指封装在数据库事务之上的一种事务处理机制.其管理方法有两种,分别是编程式事务以及声明式事务.一般我们使用@Transactional进行声明式事务. ...
- Spring 事务的传播属性
Spring 事务的传播属性 事务的传播属性: 1.PROPAGATION_REQUIRED * :如果不存在事务则新建事务,若存在事务则加入事务,默认是这个 2.PROPAGATION_SUPPOR ...
- Spring事务的传播行为
Spring事务的传播行为 Spring事务的传播行为有七种,对应着事务定义接口TransactionDefinition中的七种状态.PROPAGATION_REQUIRED.PROPAGATION ...
- Spring事务管理-传播行为-隔离级别
事务是逻辑上的一组操作,这组操作要么全部成功,要么全部失败. 事务的特性:ACID 原子性:事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生 一致性:事务前后数据的完整性约束保持一致 ...
- Spring事务的传播行为案例分析
简介:网上关于Spring事务传播性以及隔离型的文章漫天盖地,还有不负责任的直接复制名词意思,文章虽然很多却是看的云里雾里,我们今天将给出案例分别和大家一起学习. 网上关于Spring事务传播性以及隔 ...
- Spring事务处理,以及Spring事务的传播属性和隔离级别
本文转自:http://www.cnblogs.com/younggun/archive/2013/07/16/3193800.html 事务的隔离级别:事务隔离级别用于处理多事务并发的情况,通常使用 ...
最新文章
- 傅里叶分析斯坦恩中文版pdf_实分析(英文版)[(美)斯坦恩(Stein,E.M.) 著] 2013年版...
- JZOJ 5424. 【NOIP2017提高A组集训10.25】凤凰院凶真
- 工业机器人电柜布线_沙湾附近回收工业锅炉“本信息长期有效”
- 【数据结构与算法】之深入解析“不同的二叉搜索树”的求解思路与算法示例
- php 腾讯云 文字识别_腾讯云安全为何成为企业首选?4大原因成为制胜王道
- Sybase资料下载(参考手册,功能讲解很全)
- 关于本地共享文件夹会话连接时间
- 我的AWS开发人员考试未通过。 现在怎么办?
- groovy 慢_grails – Groovy中的sql.rows()运行缓慢
- IDA pro 的Python环境变量设置
- 红帽linux考证时间,红帽认证考试时间
- XCode 5安装旧版iOS SDK
- bin文件合并工具(UBIN)使用方法
- Win10配置Tensorflow-GPU
- 欧拉降幂公式模板hdu4704
- SwiftUI 如何解决Generic parameter ‘SelectionValue‘ could not be inferred
- 用matlab求二重积分例题_数学建模matlab例题参考及练习
- mysql刷新当前数据库_sqlyog刷新数据库
- 查看linux系统IPV6地址
- 订单发货地址修改php,拼多多发货地址可以修改吗?怎么合并发货?