Spring 声明式事务控制

server/2024/9/25 21:27:17/

1. 编程式事务控制相关对象

1.1 PlatformTransactionManager

PlatformTransactionManager 接口是 spring 的事务管理器,它提供了我们常用的操作事务的方法。
在这里插入图片描述

PlatformTransactionManager 是接口类型,不同的 Dao 层技术则有不同的实现类。例如:Dao层技术是jdbc或mybatis时:org.springframework.jdbc.datasource.DataSourceTransactionManager ;
Dao层技术是hibernate时:org.springframework.orm.hibernate5.HibernateTransactionManager。

1.2 TransactionDefinition

TransactionDefinition 是事务定义信息对象,里面有如下方法:
在这里插入图片描述

    1. 事务隔离级别
      设置隔离级别,可以解决事务并发产生的问题,如脏读、不可重复读和幻读。
      ISOLATION_DEFAULT
      ISOLATION_READ_UNCOMMITTED
      ISOLATION_READ_COMMITED
      ISOLATION_REPEATABLE_READ
      ISOLATION_SERIALIZABLE
    1. 事务传播行为
      REQUIRED : 如果当前没有事务,则新建一个事务。如果已经存在一个事务,则加入到这个事务中(默认值)。
      SUPPORTS : 支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务)。
      MANDATORY : 使用当前事务,如果当前没有事务,则抛出异常。
      REQUERS_NEW : 新建事务,如果当前在事务中,把当前事务挂起。
      NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
      NEVER : 以非事务方式运行,如果当前存在事务,则抛出异常。
      NESTED : 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行 REQUIRED 类似的操作。
      超时时间 : 默认值是-1,没有超时限制。如果有,以秒为单位进行设置。
      是否只读 : 建议查询时设置为只读。

1.3 TransactionStatus

TransactionStatus 接口提供的是事务具体的运行状态,方法介绍如下:
在这里插入图片描述

2. 基于 XML 的声明式事务控制

    1. 引入 tx 命名空间
      在这里插入图片描述
    1. 配置事务增强
      在这里插入图片描述
    1. 配置事务 AOP 织入
      在这里插入图片描述
    1. 测试代码
      在这里插入图片描述
    1. 切点方法事务参数的配置
      在这里插入图片描述
<tx:method>代表切点方法的事务参数的配置,例如:
<tx:method name="transfer" isolation="REPEATABLE_READ" propagation="REQUIRED" timeout="-1"
read-only="false"/>- name:切点方法名称- isolation:事务的隔离级别- propagation:事务的传播行为- timeout:超时时间- read-only:是否只读

3. 基于注解的声明式事务控制

  • 使用 @Transactional 在需要进行事务控制的类或是方法上修饰,注解可用属性与 xm 配置方式相同,例如隔离级别、传播行为等。
  • 注解使用在类上,那么该类下的所有方法都使用同一套注解参数配置。
  • 注解使用在方法上,不同的方法可以采用不同的事务参数配置。
  • xml配置文件中要开启事务的注解驱动 <tx:annotation-driven />
    在这里插入图片描述
    在这里插入图片描述

http://www.ppmy.cn/server/5487.html

相关文章

Linux 下安装MySQL 5.7与 8.0详情

官网资源下载 1、检查 /tmp 临时目录权限&#xff0c;将 /tmp 目录及所有子目录和文件的权限设置为所有用户可读、写和执行 [rootlocalhost ~]# chmod -R 777 /tmp2、安装前检查相关依赖 2.1、查找是否安装了 libaio 包。libaio 是 Linux 下异步 I/O 库的一个实现&#xff0…

【设计模式】6、bridge 桥接模式

六、bridge 桥接模式 桥接设计模式 复杂逻辑拆分&#xff1a; 如果需要完成复杂的逻辑&#xff0c;可以把复杂逻辑设计为接口&#xff0c;内部再拆分为若干接口。这样复杂的逻辑会被拆分开&#xff0c;方便解耦。 例如&#xff1a;如果遥控器控制设备。可以遥控器设计为复杂…

【c++】vector的使用

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;我们本篇来到一个新的容器&#xff0c;vector的讲解和使用 目录 1.vector简单介绍2.vector的使用2.1构造函数2.2遍历vector2.3对容量操作2.4vector的增删查改 1.v…

Parade Series - CoreAudio Loopback

Scenario 鉴于业务场景需要&#xff0c; 经过技术路径探索&#xff0c; 发现 comtypes 兼容性过于混乱&#xff0c;故而考虑整合一个 CoreAudio 的轮子dll来解决实际问题&#xff01;std::StringStream ⇒ std::ios::binary ⇒ std::ofstream Loopback.dll #ifndef _DLL_C…

OpenHarmony实战开发-如何使用弹簧曲线实现抖动动画及手机振动效果案例。

介绍 本示例介绍使用vibrator.startVibration方法实现手机振动效果&#xff0c;用keyframeAnimateTo关键帧动画实现点击后的抖动动画。 效果图预览 使用说明 1.加载完成后显示登录界面&#xff0c;未勾选协议时点击一键登录按钮会触发手机振动效果和提示文本的抖动动画。 实…

「51媒体」新闻媒体邀约如何进行媒体宣传(方法)

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 新闻媒体邀约进行媒体宣传是一个策略性的过程&#xff0c;旨在吸引媒体的注意力并促使其对特定事件、产品发布或企业活动进行报道。以下是一些关键步骤和策略&#xff1a; 制定媒体传播方…

某零售企业招聘管理体系搭建咨询项目

科学岗位分析&#xff0c;改善招聘流程&#xff0c;提高招聘及时率随着公司不断发展壮大&#xff0c;企业规模逐渐增大&#xff0c;部门设置也日益增多&#xff0c;因此对人员的需求也日益提高。但是目前该企业在人员招聘方面逐渐暴露出一些诸如岗位分析不到位、缺乏整体面试计…

[StartingPoint][Tier2]Base

Task 1 Which two TCP ports are open on the remote host? (远程服务器开放了哪两个TCP端口?) $ nmap -sC -sV 10.129.234.232 22,80 Task 2 What is the relative path on the webserver for the login page? (相关的登录页面路径是什么?) /login/login.php Task 3 …