当前位置: 首页 > news >正文

@Transactional配置详解

一:事务注解@Transactional,属性propagation的7个配置

PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。,默认配置,也是常用的选择。
PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY -- 支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW -- 新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER -- 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED -- 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。

二:每个配置的作用

A类中的方法methodA,B中的方法methodB

PROPAGATION_REQUIRED

如果当前有事务,则按照当前事务处理;如果当前没有事务,就新建一个事务。
例子:
methodA中调用methodB,methodB的事务配置为PROPAGATION_REQUIRED,那么如果methodA方法上有事务,那么methodB发现methodA有事务,则不会再创建事务,直接事务使用methodA的事务。如果methodA方法上没有事务,那么methodB会自己创建一个事务,只对methodB方法体中加入事务管理。

PROPAGATION_SUPPORTS

如果当前有事务,则按照当前事务处理;如果当前没有事务,就按照没有事务处理。
例子:
methodA中调用methodB,methodB的事务配置为PROPAGATION_SUPPORTS,那么如果methodA方法上有事务,那么methodB直接事务使用methodA的事务。如果methodA方法上没有事务,那么methodB方法体中也没有事务。

PROPAGATION_MANDATORY

如果当前有事务,则按照当前事务处理;如果当前没有事务,就抛出异常。
例子:
methodA中调用methodB,methodB的事务配置为PROPAGATION_MANDATORY,那么如果methodA方法上有事务,那么methodB直接事务使用methodA的事务。如果methodA方法上没有事务,那么直接抛出异常。

PROPAGATION_REQUIRES_NEW

不管当前是否有事务,都新建一个新的事务。
例子:
methodA中调用methodB,methodB的事务配置为PROPAGATION_REQUIRED_NEW,那么如果methodA方法上有事务,那么执行到methodB直接新建一个事务,把methodA的事务挂起,等待methodB的事务执行完毕,再进行执行methodA的事务。这样就存在两个事务,如果methodB已经提交,那么methodA失败回滚,methodB是不会回滚的;如果methodB失败回滚,他抛出的异常被DemoServiceA.demoMethodA捕获,methodA事务仍然可以提交。如果methodA方法上没有事务,那么新建事务执行。

PROPAGATION_NOT_SUPPORTED

不管当前是否有事务;都按照没有事务处理。

例子:
methodA中调用methodB,methodB的事务配置为PROPAGATION_NOT_SUPPORTED,那么如果methodA方法上有事务,那么执行到methodB时,methodA的事务挂起,methodB按照无事务处理,执行完后在执行methodA。如果methodA方法上没有事务,直接methodB方法体中也没有事务。

PROPAGATION_NEVER

如果当前有事务,则抛出异常;如果当前没有事务,就按照没有事务正常执行。

例子:
methodA中调用methodB,methodB的事务配置为PROPAGATION_NEVER,那么如果methodA方法上有事务,那么直接抛出异常。如果methodA方法上没有事务,那么按照没有事务正常执行。

PROPAGATION_NESTED

PROPAGATION_REQUIRED基本一致。

相关文章:

@Transactional配置详解

一:事务注解Transactional,属性propagation的7个配置 PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。,默认配置,也是常用的选择。 PROPAGATION_SUPPORTS -- 支持当前事务&#…...

性能测试面试题汇总

稳定性测试的怎么挑选的接口? 1、频繁使用的接口:选择那些被频繁使用的接口,因为这些接口可能会面临更大的负载和并发访问,从而可能导致性能问题。 2、核心功能接口:选择那些实现系统核心功能的接口,因为这…...

vue权限控制和动态路由

思路 登录:当用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token,拿到token之后(我会将这个token存贮到localStore中,保证刷新页面后能记住用户登录状态)&#xf…...

利用正则表达式删掉代码中的所有注释-pycharm为例

首先删除注释 打开您想要删除注释的Python文件。 使用快捷键 Ctrl Shift R 打开 "Replace in Files"(在文件中替换)对话框。 在 "Find"(查找)框中输入以下正则表达式,以查找所有行中的注释内容…...

【java基础】内部类、局部内部类、匿名内部类、静态内部类

内部类 内部类就是定义在另一个类中的类。我们使用内部类的原因主要有以下两点 内部类可以对同一个包中的其他类隐藏内部类方法可以访问定义这个类的作用域中的数据,包括原本私有的数据 public class A {class B {} }我们使用内部类可以访问外部类的所有属性&…...

react renderProps学习记录

react renderProps学习记录1.引入2.改一下呢3.再改一下呢4.总结一下如何向组件内部动态传入带内容的结构(标签)?children propsrender props1.引入 上代码: import React, { Component } from react import ./index.css export default class Parent extends Com…...

关于tf.gather函数batch_dims参数用法的理解

关于tf.gather函数batch_dims参数用法的理解0 前言1. 不考虑batch_dims2. 批处理(考虑batch_dims)2.1 batch_dims12.2 batch_dims02.3 batch_dims>22.4 batch_dims再降为12.5 再将axis降为12.6 batch_dims<02.7 batch_dims总结3. 补充4. 参数和返回值5. 其他相关论述6. 附…...

日常操作linux常用命令

cd /mnt/opt/cqstt/logs/stt-erp docker logs -f --tail1000 stt-erp # 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看逻辑CPU的…...

【Java集合框架】篇二:Collection接口方法

JDK不提供此接口的任何直接实现类&#xff0c;而是提供更具体的子接口&#xff08;如&#xff1a;Set和List&#xff09;去实现。 Collection 接口是 List和Set接口的父接口&#xff0c;该接口里定义的方法既可用于操作 Set 集合&#xff0c;也可用于操作 List 集合。方法如下…...

PHP入门指南:简单易学的语法和丰富的调试工具与安全性最佳实践

PHP是一种非常流行的服务器端编程语言&#xff0c;它被广泛地应用于Web开发中。如果您想学习Web开发&#xff0c;那么PHP是一个非常好的选择。在本文中&#xff0c;我将介绍PHP的一些基础知识&#xff0c;包括语法、变量、函数、数组、数据库连接、调试和安全性等。PHP的语法PH…...

前端面试题--HTML篇

一、src和href的区别src指向外部资源的位置&#xff0c;指向的内容会嵌入到文档中当前标签所在的位置&#xff1b;href指向网络资源的位置&#xff0c;建立和当前元素或当前文档之间的链接。二、对HTML语义化的理解根据内容的结构化&#xff0c;选择合适的标签。优点&#xff1…...

SpringBoot集成ElasticSearch,实现模糊查询,批量CRUD,排序,分页,高亮

导入elasticsearch依赖在pom.xml里加入如下依赖&#xff1a;<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>非常重要&#xff1a;检查依赖版本…...

常用Swagger注解汇总

常用Swagger注解汇总 前言 在实际编写后端代码的过程中&#xff0c;我们可能经常使用到 swagger 注解&#xff0c;但是会用不代表了解&#xff0c;你知道每个注解都有什么属性吗&#xff1f;你都用过这些属性吗&#xff1f;了解它们的作用吗&#xff1f;本文在此带大家总结一下…...

关于 TypeScript 声明文件

declare var 声明全局变量declare function 声明全局方法declare class 声明全局类declare enum 声明全局枚举类型declare namespace 声明&#xff08;含有子属性的&#xff09;全局对象interface 和 type 声明全局类型export 导出变量export namespace 导出&#xff08;含有子…...

SpringBoot学习-原理篇

SpringBoot原理篇springboot技术本身就是为了加速spring程序的开发的&#xff0c;可以大胆的说&#xff0c;springboot技术没有自己的原理层面的设计&#xff0c;仅仅是实现方案进行了改进。将springboot定位成工具&#xff0c;你就不会去想方设法的学习其原理了。就像是将木头…...

目标检测YOLOv5数据集怎么找?

完整的配置-标注-训练-识别在我这篇博客小白YOLOv5全流程-训练实现数字识别_yolov5数字识别_牛大了2022的博客-CSDN博客 模型部分剖析可以看我每周深度学习笔记部分。关于训练的数据集怎么搞很多人问过我&#xff0c;我在这篇文章给大家一点我的经验和建议。 数据集是什么 简…...

安卓短信自动填充踩坑

安卓短信自动填充踩坑 前言 最近弄了个短信自动填充功能&#xff0c;一开始觉得很简单&#xff0c;不就是动态注册个广播接收器去监听短信消息不就可以了吗&#xff1f;结果没这么简单&#xff0c;问题就出在机型的适配上。小米的短信权限、荣耀的短信监听都是坑&#xff0c;…...

【抽象类和接口的区别】

抽象类和接口都是Java中实现多态的机制&#xff0c;它们都是用来约束子类必须要实现的方法。但是它们有以下区别&#xff1a; 实现方式 实现方式&#xff1a;抽象类是一个类&#xff0c;而接口是一个接口。一个类只能继承一个抽象类&#xff0c;但可以实现多个接口。 构造方…...

接口导出文件功能

1.写接口 export function getExport(params) { return fetch({ url: ******.export, method: post, data: params, responseType:blob, }) } 2.编写前端页面 <el-button :loading"exportDisable" :disabled&quo…...

深圳大学计软《面向对象的程序设计》实验9 期中复习

A. 机器人变身&#xff08;类与对象&#xff09;【期中模拟】 题目描述 编写一个机器人类&#xff0c;包含属性有机器名、血量、伤害值、防御值、类型和等级。其中血量、伤害和防御和等级、类型相关&#xff1a; 普通型机器人&#xff0c;类型为N&#xff0c;血量、伤害、防…...

Java AI开发实战:基于ai4j的低版本JDK大模型集成与Agent构建指南

1. 项目概述与定位如果你是一个Java开发者&#xff0c;最近想在自己的项目里集成大模型能力&#xff0c;或者想搞点AI Agent的自动化流程&#xff0c;大概率会面临一个选择难题&#xff1a;是用Spring AI&#xff0c;还是LangChain4j&#xff1f;前者对Spring Boot 3.x和Java 1…...

iSCSI共享存储实战:从单服务器配置到多主机集群数据访问测试

1. iSCSI共享存储基础概念与场景解析 第一次接触iSCSI时&#xff0c;我被它神奇的网络磁盘共享能力震撼到了——就像给服务器插上了"无线硬盘"。iSCSI&#xff08;Internet Small Computer System Interface&#xff09;本质上是通过IP网络传输SCSI协议&#xff0c;把…...

嵌入式GUI设计:硬件选型与OpenGL优化实战

1. 嵌入式GUI设计的核心价值与市场驱动力在智能设备爆发的时代&#xff0c;嵌入式图形用户界面&#xff08;GUI&#xff09;已经从"锦上添花"变成了"不可或缺"的核心竞争力。我亲历过多个项目&#xff0c;那些仅关注硬件性能而忽视交互体验的产品&#xff…...

基于Vue3的一站式AI服务聚合平台部署与二次开发实战指南

1. 项目概述与核心价值最近在折腾AI应用&#xff0c;发现很多朋友想自己搞个ChatGPT或者Midjourney的网站来用&#xff0c;甚至是想做个副业&#xff0c;但往往卡在几个关键环节&#xff1a;一是API的对接和费用管理太麻烦&#xff0c;二是用户系统和支付分销这些基础功能从零搭…...

CANN/asc-devkit半精度转无符号整数函数

__half2uint_rd 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https://gitcode…...

如何永久保存微信聊天记录?5步实现数据自主管理

如何永久保存微信聊天记录&#xff1f;5步实现数据自主管理 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …...

AI代理规则引擎:构建安全可控的智能体管控系统

1. 项目概述&#xff1a;当AI代理需要“交通规则”最近在折腾AI代理&#xff08;Agent&#xff09;的开发&#xff0c;发现一个挺有意思但又普遍头疼的问题&#xff1a;你给一个代理下达指令&#xff0c;比如“帮我分析一下这个季度的销售数据”&#xff0c;理论上它应该能调用…...

别再手动翻译了!用Python的googletrans库5分钟搞定批量文件翻译(附实战代码)

用Python自动化批量翻译&#xff1a;googletrans实战进阶指南 当你面对上百页的外文文档需要翻译时&#xff0c;是否还在复制粘贴到网页翻译工具&#xff1f;作为开发者&#xff0c;我们完全可以用Python的googletrans库构建自动化翻译流水线。本文将带你超越基础的单句翻译&am…...

从Prompt Gateway到Content SLA引擎:2026奇点大会上最受瞩目的5个开源组件,已集成至CNCF沙箱(限前500名开发者获取部署手册)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生内容生成平台&#xff1a;2026奇点智能技术大会AIGC系统搭建 在2026奇点智能技术大会上&#xff0c;主办方构建了一套面向多模态协同创作的AI原生内容生成平台&#xff08;AIGC-OS&#xff09;&a…...

3步解锁电脑隐藏性能:UXTU硬件调优实战指南

3步解锁电脑隐藏性能&#xff1a;UXTU硬件调优实战指南 【免费下载链接】Universal-x86-Tuning-Utility Unlock the full potential of your Intel/AMD based device. 项目地址: https://gitcode.com/gh_mirrors/un/Universal-x86-Tuning-Utility 还在为游戏卡顿而烦恼吗…...