【JavaWeb后端学习笔记】Spring事务管理

embedded/2025/2/7 5:58:39/

Spring事务管理

  • 1、事务管理
  • 2、事务管理使用场景
  • 3、@Transactional注解属性
    • 3.1 rollbackFor
    • 3.2 propagation

1、事务管理

事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。在进行数据库多表操作时,需要格外注意数据的一致性和完整性。因此在使用Spring框架时,需要做好事务管理。

Spring已经将事务管理的代码封装好,只需要通过一个注解即可完成事务管理:

  • 注解:@Transactional
  • 位置:业务(Service)层的方法上、类上或接口上;
  • 作用:将当前方法交给spring进行事务管理,方法执行前,开启事务;成功执行提交事务;出现异常,回滚事务。

@Transactional注解位置不同产生的效果不同:

  • 作用在方法上时,这个方法交给事务管理;
  • 作用在类上时,这个类中的所有方法交给事务管理;
  • 作用在接口上时,这个接口的实现类中实现的接口的方法交给事务管理。

Spring开启事务管理日志:

java">logging:level:org.springframework.support.JdbcTraceInterceptor: debug

2、事务管理使用场景

在数据库的增、删、改、查四个操作中,并不是所有的操作都需要加失误管理。通常查询操作不会改变数据库内容,因此不需要进行事务管理;单表操作的增、删、改的事务管理可以交给MySQL,所以在Spring中不需要进行事务管理。只有在进行多表的增、删、改操作或者执行多次数据访问操作时才需要进行事务管理。

3、@Transactional注解属性

3.1 rollbackFor

@Transactional注解中的rollbackFor属性
默认情况下,只有出现RuntimeException运行时异常才回滚异常。rollbackFor属性用于控制出现何种异常类型时回滚事务。
范例:

java">@Transactional(rollbackFor = Exception.class) //回滚所有异常

3.2 propagation

@Transactional注解中的propagation属性:
事务传播行为:指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制。

属性值含义
REQUIRED[默认值]需要事务,有则加入,无则创建新事务
REQUIRES_NEW需要新事务,无论有无,总是创建新事务
SUPPORTS支持事务,有则加入,无则在无事务状态中运行
NOT_SUPPORED不支持事务,在无事务状态下运行,如果当前存在已有事务,则挂起当前事务
MANDATORY必须有事务,否则抛异常
NEVER必须无事务,否则抛异常

http://www.ppmy.cn/embedded/144182.html

相关文章

专升本计算机——计算机基础知识测试

一、选择题 1.关于计算机的发展及基本知识,不正确的是 ( )。 A.计算机正朝着多极化的方向发展。 B.从计算机诞生至今,计算机所采用的电子器件依次是:电子管、晶体管、中小规模集成电路和大、超大规模集成电路。 C.世界上第一台电子计算机…

2个GitHub上最近比较火的Java开源项目

1. SpringBlade 微服务架构 标题 SpringBlade 微服务架构 摘要 SpringBlade 是一个由商业级项目升级优化而来的微服务架构,采用Spring Boot 3.2、Spring Cloud 2023等核心技术构建,遵循阿里巴巴编码规范,提供基于React和Vue的两个前端框架&am…

十五、全局搜索正则表达式

一.grep简介 grep 全程Globally search a Regular Expression and Print,是一种强大的文本搜索工具,它能使用特 定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep和egrep 二.grep的工作…

第七章续版,mapper.xml,这是重点,一对多,一对一,动态SQL,foreach...

mapper,mapper.xml 1.单表查询 <select id"接口名" parameterType"参数类型&#xff0c;单个参数时写对应类型&#xff0c;两个及以上用Map" resultType"返回值类型&#xff0c;查询必须写">这里写SQL语句 </select> Map时测试类写…

【QT】:QT(介绍、下载安装、认识 QT Creator)

背景 &#x1f680; 在我们的互联网中的核心岗位主要有以下几种 开发&#xff08;程序员&#xff09;测试运维&#xff08;管理机器&#xff09;产品经理&#xff08;非技术岗位&#xff0c;提出需求&#xff09; 而我们这里主要关注的是开发方向&#xff0c;开发岗位又分很…

捷米特 EtherNet/IP 总线协议网关的具体内容介绍

关于EtherNET/IP的基本介绍 EtherNet/IP 中的 “Ethernet” 指以太网&#xff0c;是一种常见的局域网技术&#xff0c;用于在有限区域内实现多台设备之间的数据传输&#xff1b;“IP” 在此处指工业协议&#xff08;Industrial Protocol&#xff09;&#xff0c;而不是通常所说…

Ubuntu 20.04安装rsync 3.2.7

前言 Ubuntu 20.04的apt中不支持rsync 3.2.0的安装&#xff0c;因此需要手动编译安装&#xff0c;记录下过程 ~$ apt policy rsync rsync:已安装&#xff1a;(无)候选&#xff1a; 3.1.2-2.1ubuntu1.6版本列表&#xff1a;3.1.3-8ubuntu0.7 -1100 /var/lib/dpkg/status下载所…

Ubuntu22.04搭建LAMP环境(linux服务器学习笔记)

目录 引言&#xff1a; 一、系统更新 二、安装搭建Apache2 1.你可以通过以下命令安装它&#xff1a; 2.查看Apache2版本 3.查看Apache2运行状态 4.浏览器访问 三、安装搭建MySQL 1.安装MySQL 2.查看MySQL 版本 3.安全配置MySQL 3.1是否设置密码&#xff1f;(按y|Y表…