Spring的第十五阶段:Spring的事务管理(02)

news2025/1/21 16:26:01

1、自定义设置回滚异常

rollbackFor和rollbackForClassName回滚的异常

/**
 * @Transactional 表示使用通知( 启用事务 ) <br/>
 * rollbackFor 属性可以自定义哪些异常可以回滚事务 <br/>
 * rollbackForClassName 属性可以自定义哪些全类名的异常回滚事务 <br/>
 */
@Transactional(rollbackForClassName = "java.io.FileNotFoundException")
public void multiUpdate() throws Exception {
    bookDao.updateBook();
    int i = 12;
    if (i == 12) {
        throw new FileNotFoundException();
    }
    userDao.updateUser();
}

2、事务的只读属性

insert , update , delete 语句是写操作
select 是读操作
只读,就是只允许用户查询数据 , 不允许用户修改数据.

测试readOnly只读属性

/**
 * @Transactional 表示使用通知( 启用事务 ) <br/>
 *
 * readOnly 它可以设置当前方法是否允许写操作 <br/>
 *  默认是允许的.所以它的默认值是false. <br/>
 *  如果设置readOnly = true就不允许执行写操作的sql语句.
 */
@Transactional(readOnly = true)
public void multiUpdate() throws Exception {
    bookDao.updateBook();
    userDao.updateUser();
}

在这里插入图片描述

3、事务超时属性timeout (秒为单位)

/**
 * @Transactional 表示使用通知( 启用事务 ) <br/>
 *
 *  timeout属性可以设置多少秒内不再允许执行sql语句( 在指定秒数内要完成事务 ) <br/>
 *  timeout = 3 表示3秒后不允许执行sql语句,否则就是操作超时 <br/>
 */
@Transactional(timeout = 3)
public void multiUpdate() throws Exception {
    bookDao.updateBook();
    Thread.sleep(5000);
    userDao.updateUser();
}

超时的异常信息:

在这里插入图片描述

4、事务的传播特性propagation

什么是事务的传播特性 ( 传播行为 ):

当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。
事务的传播行为可以由传播属性指定。Spring定义了7种类传播行为。

事务的传播特性,有以下几种类型:
在这里插入图片描述

5、注解演示事物传播特性

UserService
BookService
TransactionService

大小事务传播特性都是REQUIRED

	@Transactional(propagation = Propagation.REQUIRED)
	public void multiTransaction() {
	@Transactional(propagation = Propagation.REQUIRED)
	public void updateBook() {
	@Transactional(propagation=Propagation.REQUIRED)
	public void updateUser() { }

在这里插入图片描述

大小事务传播特性都是REQUIRES_NEW

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void multiTransaction()
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateBook()
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateUser()

在这里插入图片描述

大事务是REQUIRED,小1REQUIRED,小2REQUIRES_NEW

@Transactional(propagation = Propagation.REQUIRED)
public void multiTransaction()
@Transactional(propagation = Propagation.REQUIRED)
public void updateBook()
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateUser()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java实现八大排序

&#x1f495;“汲取知识&#xff0c;分享快乐&#xff0c;让生命不留遗憾”&#x1f495; &#x1f386;作者&#xff1a;不能再留遗憾了&#x1f386; &#x1f43c;专栏&#xff1a;Java学习&#x1f43c; &#x1f3c0;该文章主要内容&#xff1a;直接插入排序、希尔排序、…

VMware安装Ubuntu系统

VMware安装Ubuntu系统 1.首先选择文件&#xff0c;点击新建虚拟机 2.选择自定义&#xff0c;点击下一步 3.点击下一步 4.选择稍后安装操作系统&#xff0c;点击下一步 5.选择Linus操作系统&#xff0c;版本选择Ubuntu64位&#xff0c;点击下一位 6.自己看图 7. 这里根据自…

「2023 最新」 Github、Gitlab Git 工作流「常用」 git 命令、规范以及操作总结 Rebase

Git commit 规范 关于提交信息的格式&#xff0c;可以遵循以下的规则&#xff1a; feat: 新特性&#xff0c;添加功能fix: 修改 bugrefactor: 代码重构docs: 文档修改style: 代码格式修改test: 测试用例修改chore: 其他修改, 比如构建流程, 依赖管理 Git 基础知识 当我们通过…

ThinkPHP6,视图的安装及模板渲染和变量赋值 view::fetch() ,view::assgin() ,助手函数

ThinkPHP6&#xff0c;视图的安装及模板渲染和变量赋值 tp6视图功能由\think\View类配合视图驱动&#xff08;也即模板引擎驱动&#xff09;类一起完成&#xff0c;新版仅内置了PHP原生模板引擎&#xff08;主要用于内置的异常页面输出&#xff09;&#xff0c;如果需要使用其…

mysql数据库的数据类型 -- 4

目录 数据类型 4.1&#xff1a;数据类型的分类 4.2&#xff1a;数值类型 4.3&#xff1a;字符类型 4.5&#xff1a;enum和set类型 数据类型 4.1&#xff1a;数据类型的分类 数值类型 描述 TINYINT [UNSIGNED]整数&#xff0c;占用1字节SMALLINT [UNSIGNED] 整数&#xf…

springboot+vue滴答拍摄影项目(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的滴答拍摄影项目。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌…

JAVA程序员不得不知道的String类

文章目录 目录 文章目录 前言 String类的重要性: 一.String类简介 二.String底层源码剖析 三.字符串构造 三.字符串的比较 四.String类常用方法 1.字符串查找 2.字符串转化 2.1 大小写转换 2.2 数组转字符串 2.3数值和字符串转化 2.4 格式化 ​编辑 3 字符串替换 ​…

【19】SCI易中期刊推荐——计算机 | 人工智能领域(中科院2区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

实验四 Spark Streaming

实验四 Spark Streaming 1.实验目的 1. 熟悉编写 Spark Streaming 程序处理流数据的方法。 2.实验内容 1. 实时统计贷款金额 模拟解决贷款金额的实时统计问题。假设某外企客户贷款金额数据如下&#xff08;json 格式&#xff09;&#xff0c; 第一项是客户名称&#xff08;…

[Data structure]双链表 | 一文带你了解线性数据结构之一的双链表

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;数据结构 双链表 1、简介2、常见操作3、时间复杂度4、代码实现思路总览5、Node6、DoubleLinkedList6.1、添加节点…

设计模式——对象创建模式之工厂模式

文章目录 前言一、“单一职责” 模式二、Factory Method 工厂方法1、动机2、模式定义3、伪代码示例4、结构 总结 前言 一、“单一职责” 模式 通过“对象创建”模式绕开new&#xff0c;来避免对象创建&#xff08;new&#xff09;过程中所导致的紧耦合&#xff08;依赖具体类&…

Linux系统之dstat命令的基本使用

Linux系统之dstat命令的基本使用 一、dstat命令介绍1. dstat简介2. dstat特点 二、本次实践介绍1. 本地环境规划2. 本次实践介绍 三、本地环境检查1. 检查操作系统版本2. 查看系统内核版本3. 检查本地yum仓库源状态 三、安装dstat工具1. 搜索dstat软件2. 安装dstat工具3. 查看d…

海康威视 2024届 数字逻辑设计 实习笔试分析

说明 记录一下 5月11日晚&#xff0c;做的海康威视的一场笔试。分享给需要的IC人。 岗位&#xff1a;数字逻辑设计工程师&#xff08;浙江 杭州&#xff09; 转载需要本人同意&#xff01; 我的见解不一定都是准确的&#xff0c;欢迎评论区交流指正~~ 单选题 1、&#xff…

springboot+vue漫画之家系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的漫画之家系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…

TweenMax介绍

GSAP 之 TweenMax 介绍&#xff08;一&#xff09; 一、背景 GreenSock &#xff08;绿袜子&#xff09; GreenSock 是一家做 专业级 JavaScript 动画的公司&#xff0c;主要产品就是其下的 GSAP (GreenSock Animation Platform)&#xff0c;配合着 GSPA 开发了很多专业的动画…

做一个好玩的,给小猫拍照。web 端实现,发布图片,浏览图片。

0&#xff1a;先试试看 hongweizhu.com/#/cat 。 1&#xff1a;上班的路上会路过一家宠物店&#xff0c;里面有一只小猫&#xff0c;给它拍点照片&#xff0c;增加一点乐趣。 2: 使用到的技术 MongoDB 数据库&#xff08;我暂时不想把图片直接放到服务器某个目录上&#xff0c;…

你对这4个ICT行业的网络设备,可能一无所知

晚上好&#xff0c;我是老杨。 上个月给你整了篇安全方向的报告分析&#xff0c;反响不错。 那篇主要是对网络安全的就业前景和怎么入门进行了具体分析&#xff0c;没看过的可以看看&#xff1a;《一不留神&#xff0c;网络安全工程师的岗位需求&#xff0c;破237万了》。 不…

混合精度是如何加速大模型训练的?

混合精度是如何加速大模型训练的&#xff1f; 基础知识回顾float-32从float-32 到float-16 混合精度计算bfloat16 基础知识回顾 float-32 在深度学习中&#xff0c;通常使用float-32 精度的数值训练模型&#xff0c;其中pytorch默认的也是float-32。 float32&#xff0c;也就…

每日一练 | 华为认证真题练习Day43

1、关于访间控制列表编号与类型的对应关系&#xff0c;下面描述正确的是&#xff08;&#xff09;。 A. 基本的访问控制列表编号范围是1000-2999 B. 二层的访问控制列表编号范围是4000-4999 C. 高级的访间控制列表编号范围是3000-4000 D. 基于接口的访问控制列表编号范围是…

IO + File 详细基础知识

文章目录 IO File一、 File二、IO流2.0 IO流介绍2.1 字节流2.1.1 字节输出流 - FileOutputStream2.1.1.1 write方法2.1.1.2 字节输出流细节2.1.1.3代码实现2.1.1.4 换行与续写 2.1.2 字节输入流 - FileInputStream2.1.2.1 read()方法2.1.2.2 字节输入流细节2.1.2.3 代码实现 2…