spring框架的事务传播级别经典篇

一 spring事务传播级别

1.1 总结概述

方法A:外围方法,方法B:内部方法,在A中调用B
1.事务级别PROPAGATION_REQUIRED:
如果A为PROPAGATION_REQUIRED:B 不管有没有设置事务级别,都会加入到A的事务级别中。如果执行B的时候出异常,那么不仅B方法里执行的会被回滚,A也会全回滚。所有Propagation.REQUIRED修饰的内部方法和外围方法均属于同一事务,只要一个方法回滚,整个事务均回滚
如果A没有设置事务级别,Propagation.REQUIRED修饰的内部方法B会新开启自己的事务,且开启的事务相互独立,互不干扰。
2.事务级别PROPAGATION_support:
如果A为PROPAGATION_REQUIRED:B 不管有没有设置事务级别,都会加入到A的事务级别中。如果执行B的时候出异常,那么不仅B方法里执行的会被回滚,A也会全回滚。所有Propagation.REQUIRED修饰的内部方法和外围方法均属于同一事务,只要一个方法回滚,整个事务均回滚
如果A没有设置事务级别,Propagation.support修饰的内部方法B,就不开启新的事务,会以非事务方式运行。
3.事务级别PROPAGATION_MANDATORY(强制传播):
如果A为PROPAGATION_REQUIRED:B 不管有没有设置事务级别,都会加入到A的事务级别中。如果执行B的时候出异常,那么不仅B方法里执行的会被回滚,A也会全回滚。所有Propagation.REQUIRED修饰的内部方法和外围方法均属于同一事务,只要一个方法回滚,整个事务均回滚
如果A没有设置事务级别,Propagation.MANDATORY修饰的内部方法B,就抛出异常,即必须在事务的环境下运行。
4.事务级别PROPAGATION_REQUIRED_NEW:
如果A为PROPAGATION_REQUIRED:B不管有没有设置事务级别PROPAGATION_REQUIRED_NEW,都会新开启自己的事务,和方法A的事务,相互独立,互不干扰。各自玩各自的。
5.事务级别PROPAGATION_NOT_SUPPORTED:
如果A为PROPAGATION_REQUIRED:B 设置事务级别PROPAGATION_NOT_SUPPORTED,B会以非事务的方式执行,B执行完后,再以事务的方式执行剩余逻辑,
此时不管B是成功还是失败,对A都不造成影响。此时如果A出现异常,对B也不会造成影响,只会回滚A里的其他的执行。如果是单独执行B方法,直接会以非事务的方式执行。
6.事务级别PROPAGATION_never
如果A为PROPAGATION_REQUIRED:B 有设置事务级别PROPAGATION_never,A调用B 则报异常
如果A没有设置事务级别,B 有设置事务级别PROPAGATION_never,则B以非事务方式运行。
7.事务级别PROPAGATION_nested
如果A为PROPAGATION_REQUIRED:B 有设置事务级别PROPAGATION_nested,外围主事务A回滚,子事务B一定回滚,而内部子事务B可以单独回滚而不影响外围主事务A和其他子事务(需要 catch进去,后边有例子)
如果A没有设置事务级别,B 有设置事务级别PROPAGATION_nested,则Propagation.NESTED和Propagation.REQUIRED作用相同,修饰的内部方法B都会新开启自己的事务,且开启的事务相互独立,互不干扰。

https://www.cnblogs.com/sjj123/p/16677875.html

【spring】spring 的事务(transaction) 四 嵌套事务PROPAGATION_NESTED_云川之下的博客-CSDN博客

【Spring】彻底搞明白事物的传播级别_事务传播级别-CSDN博客

1.2 PROPAGATION_NESTED 与PROPAGATION_REQUIRES_NEW的区别

PROPAGATION_REQUIRES_NEW内层事务执行完就立即提交。

PROPAGATION_NESTED 子事务执行完,不会立即提交,而是等待外层事务完成后一起提交。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/235579.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科学上网也clone不全PX4?

一、问题 已经科学上网,下载PX4固件 git clone https://github.com/PX4/Firmware.git --recursivePX4大框架 clone 下来了,但是内部的子模块很多没有,报了很多 Fatal,例如 fatal: clone of https://github.com/px4/cyclonedds …

【Java线程通信】一窥究竟

今天我们要聊一聊Java线程通信。如果你是一个Java开发者,那么你肯定知道线程是Java中的一个重要概念。线程是程序执行的最小单位,它可以独立运行,也可以与其他线程共享资源。那么,线程之间如何进行通信呢?这就是我们今…

代理模式 1、静态代理 2、动态代理 jdk自带动态代理 3、Cglib代理

文章目录 代理模式1、静态代理2、动态代理jdk自带动态代理 3、Cglib代理 来和大家聊聊代理模式 代理模式 代理模式:即通过代理对象访问目标对象,实现目标对象的方法。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操…

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-BiLSTM-Multihead-…

Containerd Container管理功能解析

Containerd Container管理功能解析 container是containerd的一个核心功能,用于创建和管理容器的基本信息。 本篇containerd版本为v1.7.9。 更多文章访问 https://www.cyisme.top 本文从ctr c create命令出发,分析containerd的容器及镜像管理相关功能。 …

【Vulnhub 靶场】【DriftingBlues: 9 (final)】【简单】【20210509】

1、环境介绍 靶场介绍:https://www.vulnhub.com/entry/driftingblues-9-final,695/ 靶场下载:https://download.vulnhub.com/driftingblues/driftingblues9.ova 靶场难度:简单 发布日期:2021年05月09日 文件大小:738 …

数字图像处理(实践篇)一 将图像中的指定目标用bBox框起来吧!

目录 一 实现方法 二 涉及的OpenCV函数 三 代码 四 效果图 一 实现方法 ①利用OTSU方法将前景与背景分割。 ②使用连通区域分析可以将具有相同像素值且位置相邻的前景像素点组成的图像区域识别。 ③画bbox。 ④显示结果。 二 涉及的OpenCV函数 ① OpenCV提供了cv2.th…

MySQL组合索引,最左匹配原则失效

说明:在SQL优化时,建立组合索引,我们需要知道最左匹配失效的情况,本文通过实例介绍最左匹配原则失效; 建立组合索引 如下,是一张大表,有1000万条数据; 对表中password、sex和email…

FFmpeg架构全面分析

一、简介 它的官网为:https://ffmpeg.org/,由Fabrice Bellard(法国著名程序员Born in 1972)于2000年发起创建的开源项目。该人是个牛人,在很多领域都有很大的贡献。 FFmpeg是多媒体领域的万能工具。只要涉及音视频领…

virtualbox安装时报错:无法访问你试图使用的功能所在的网络位位置。旧版本的msi文件误删问题解决。

错误如下图所示: 无法访问你试图使用的功能所在的网络位位置。单击“确定”重试,或在下面的框中输入包含安装程序包“xxxxxxxxxxxxx.msi”的文件夹路径。 今天在帮同学安装时发生这个问题,然后各种网站搜索教程,最后也是花了将近…

【EI会议征稿通知】第七届结构工程与工业建筑国际学术会议(ICSEIA 2024)

第七届结构工程与工业建筑国际学术会议(ICSEIA 2024) 2024 7th International Conference on Structural Engineering and Industrial Architecture 随着城市化进程的不断深入,建筑领域的需求也在优化、调整。结构工程的发展依旧受到重视&am…