Spring事务:7种传播方式、4种隔离级别

Spring事务的代码承接jdbcTemplate的

文章目录

  • 一、事务
    • 1.1 注解配置
    • 1.2 注解处理事务
    • 1.3 xml处理事务配置
  • 二、传播方式
  • 三、事务的隔离级别


一、事务

不可分割的一系列操作。要么 全执行成功。要么 如果一个不成功,则全部不成功
处理的事务的时候,成功则提交,失败则回滚。

1.1 注解配置

<!--    1.配置事务管理器--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!--开启注解事务(需要添加tx的头文件--><tx:annotation-driven transaction-manager="transactionManager"/>

1.2 注解处理事务

 @Transactional(propagation= Propagation.REQUIRED,isolation = Isolation.SERIALIZABLE,rollbackFor = Exception.class)

1.3 xml处理事务配置

利用AOP实现xml处理事务

    <!--  1.配置链接资源  --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="url" value="jdbc:mysql:///mybatis"/><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="username" value="root"/><property name="password" value="7895123"/></bean><!--  2.配置jdbcTemplate  --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--  注入链接资源  --><property name="dataSource" ref="dataSource"/></bean><!--    &lt;!&ndash;  3.扫描  &ndash;&gt;-->
<!--    <context:component-scan base-package="com.zwk"/>--><!--    1.配置事务管理器--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean>
<!--    &lt;!&ndash;开启注解事务&ndash;&gt;-->
<!--    <tx:annotation-driven transaction-manager="transactionManager"/>--><!--    配置通知--><tx:advice id="txAdvice"><tx:attributes><tx:method name="test" propagation="REQUIRED"/></tx:attributes></tx:advice><!--    配置切入点和切入面--><aop:config><aop:pointcut id="p" expression=" execution(* com.zwk.service.BankService.test(..) )"/><aop:advisor advice-ref="txAdvice" pointcut-ref="p"/></aop:config><bean id="bankService" class="com.zwk.service.BankService"><property name="bankDao" ref="bankDao"/></bean><bean id="bankDao" class="com.zwk.dao.impl.BankDaoImpl"><property name="jdbcTemplate" ref="jdbcTemplate"/></bean>

二、传播方式

  1. REQUIRED: 如果有事务运行,当前的方法就在这个事务内运行,否则,就启动一个新的事务,并在自己的事务内运行
  2. REQUIRES_NEW: 当前的方法必须启动一个新的事物,并在自己的事务内运行,如果有事务运行,应该将它挂起
  3. SUPPORTS : 如果有事务在运行,当前方法就在这个事务内运行,否则它可以不运行在事务中
  4. NOT_SUPPORTED: 当前方法不应该运行在事务中,如果有运行的事务,将它挂起
  5. MANDATORY: 当前方法必须运行在事务内部,如果没有运行的事务,就会抛出异常
  6. NEVER : 当前方法不应该运行在事务中,如果有运行的事务,就会抛出异常
  7. NESTED: 如果有事务运行,当前的方法就应该在这个事务的嵌套事务内运行,否则就会启动一个新的事务,并在它自己的事务内运行

三、事务的隔离级别

  1. 脏读:一个事务可能看到并依赖于其他事务未确认且最终可能被回滚的更改。
  2. 不可重复读: 在同一个事务内进行多次相同的查询,如果期间其他事务提交了影响这些数据的更改,可能导致“不可重复读”(Non-repeatable Read),即两次相同的查询返回不同的结果。
  3. 幻读: 同一个事务在两次执行相同的范围查询时,第二次查询可能看到其他事务在此期间提交的新行(这些新行满足第一次查询的条件,但之前未被发现)。
脏读不可重复读幻读
Read Uncommitted
Read Committed
Repeatable Read
Serializable

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

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

相关文章

QT——第一个项目(HelloWorld)

QT——第一个项目&#xff08;HelloWorld&#xff09; 通过控件创建通过代码的方式实现对象树自己观察 我们之前对QT有了一定的了解&#xff0c;今天我们要用QT来写一段经典代码&#xff1a;HelloWorld。如果还没有看过前两次QT初识的小伙伴可以点击这里&#xff1a; https://b…

CentOS安装MeterSphere并实现无公网IP远程访问本地测试平台

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…

沉浸又护眼!观影爱好者的最佳CP“星光S1”4月6日开售

据悉&#xff0c;海信激光电视将在4月6日举行线上发布会。除3月已经开售、配备可折叠屏幕的星光S1 100英寸外&#xff0c;本次发布会还将发布星光S1 75英寸、80英寸、88英寸全系版本&#xff0c;为不同用户实现院线级家庭观影体验。 高色域&#xff0c;一直是新一代显示技术的…

Flux 和 Mono区别:并发并行同步异步区别

Flux 和 Mono区别 在工作中&#xff0c;看到导师写项目的时候用到了Flux和Mono。知识盲区了。随后去查了相关的技术信息。很遗憾说的有点太官方了。没有看懂。中午就餐之后&#xff0c;就问导师这两个是什么意思&#xff0c;以及什么区别。废话不多说&#xff0c;总结一下&…

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

1、下面哪些OSPF状态迁移是可能的&#xff08;多选&#xff09; A. DOWN->INIT B. DOWN->2-WAY C. LOADING->FULL D. INIT->2-WAY 2、如果需要在某网段上进行快速失效检测机制&#xff0c;则在下列可能实现的配置方法中&#xff0c;描述错误的是:&#xff08;多…

LeetCode - 1702. 修改后的最大二进制字符串

文章目录 解析AC CODE 题目链接&#xff1a;LeetCode - 1702. 修改后的最大二进制字符串 解析 详细题解&#xff1a;贪心&#xff0c;简洁写法&#xff08;Python/Java/C/Go/JS/Rust&#xff09; 思路很牛b。 简单来说我们需要想办法将0配对&#xff0c;将其变为10&#xff0…

K8S:常用资源对象操作

文章目录 一、使用Replication Controller(RC)、Replica Set(RS) 管理Pod1 Replication Controller&#xff08;RC&#xff09;2 Replication Set&#xff08;RS&#xff09; 二、Deployment的使用1 创建2 滚动升级3 回滚Deployment三、 Pod 自动扩缩容HPA1 使用kubectl autosc…

React + three.js 3D模型骨骼绑定

系列文章目录 React 使用 three.js 加载 gltf 3D模型 | three.js 入门React three.js 3D模型骨骼绑定 项目代码(github)&#xff1a;https://github.com/couchette/simple-react-three-skeleton-demo 项目代码(gitcode)&#xff1a;https://gitcode.com/qq_41456316/simple-r…

多时间尺度源储荷协调调度策略:储能电站特性分布与电网接入

《考虑特性分布的储能电站接入的电网多时间尺度源储荷协调调度策略》&#xff08;作者&#xff1a;金力等&#xff09;这标题听起来有点拗口&#xff0c;但其实它讲的是关于电网里储能电站怎么更高效地工作的策略。 文章的背景和目的是基于当前电网面临的多时间尺度调度的挑战。…

spring(7)-事务

事务 1、 事务概述2、spring对事务的支持2.1 spring事务管理API2.2 事务属性2.2.1 事务传播行为2.2.2 案例2.2.2.1 REQUIRED2.2.2.2 REQUIRES_NEW2.2.2.3 NESTED 2.2.3 事务隔离行为2.2.3.1 测试2.2.3.2 读未提交2.2.3.3 读提交2.2.3.4 可重复读 2.2.4 事务超时2.2.5 只读事务2…

2024认证杯数学建模B题思路模型代码

目录 2024认证杯数学建模B题思路模型代码:4.11开赛后第一时间更新&#xff0c;获取见文末名片 第十三届“认证杯”数学中国数学建模比赛赛后体会 2024认证杯数学建模B题思路模型代码:4.11开赛后第一时间更新&#xff0c;获取见文末名片 第十三届“认证杯”数学中国数学建模比…

SE78图片迁移下载

SAP好像并没有标准的事务码可以方便下载已上传至SAP服务器上的图片&#xff0c;通常的解决方法写一个专门下载这类图片的简单程序来处理。 REPORT Ydownload. DATA : g_bytecount TYPE i,g_content TYPE STANDARD TABLE OFbapiconten INITIAL SIZE …

中国知网:学术资源的宝库与知识共享的平台

中国知网&#xff0c;作为国内领先的学术平台&#xff0c;始终致力于实现全社会知识资源的传播共享与增值利用。自1999年6月创建以来&#xff0c;知网已经成为了中国学术界的重要组成部分&#xff0c;为广大学者、研究人员和学生提供了一个全面、便捷的学术资源库。 一、知网的…

OpenHarmony南向开发案例:【智能垃圾桶】

样例简介 智能垃圾桶可以通过数字管家应用来监测垃圾桶当前可用容量&#xff0c;提醒主人及时处理垃圾&#xff1b;通过日程管家可以实现和其他智能设备联动。 核心组件位置功能距离传感器置于垃圾桶盖内侧感应垃圾量红外传感器置于垃圾桶前端感应是否有人靠近光敏电阻开发板…

2006-2021年各省能源消费总量数据(无缺失)

2006-2021年各省能源消费总量数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;2006-2021年 2、来源&#xff1a;能源年鉴、各省年鉴 3、范围&#xff1a;30个省 4、指标&#xff1a;能源消费总量&#xff08;万吨标煤&#xff09; 5、缺失情况&#xff1a;无缺失 …

AI人工智能讲师简历大模型讲师叶梓大模型技术与应用培训提纲

叶梓&#xff0c;工学博士&#xff0c;高级工程师。现某大型上市企业资深技术专家。 2005年上海交通大学计算机专业博士毕业&#xff0c;在校期间的主研方向为数据挖掘、机器学习、人工智能。毕业后即进入软件行业从事信息化技术相关工作&#xff1b;负责或参与了多项国家级、省…

Docker Nginx 部署Vue项目

先弄个ngix镜像&#xff0c;还原到linux里面 发布包放的位置 nginx配置文件 server {listen 8049;server_name localhost;#charset koi8-r;access_log /var/log/nginx/host.access.log main;error_log /var/log/nginx/error.log error;location / {# root 根目录&a…

Apache POI

Apache POI的使用和下载 要使用Apache POI&#xff0c;您需要下载POI库&#xff0c;并将它添加到您的项目中。 首先&#xff0c;您需要从Apache POI的官方网站&#xff08;https://poi.apache.org/&#xff09;下载POI库。在网站的“Downloads”页面上&#xff0c;找到“Bina…

Vue3报错:‘defineProps‘ is not defined no-undef

解决方法 在package.json中添加 "vue/setup-compiler-macros": true 记得在上面的 "node": true 后面加一个逗号 "eslintConfig": {"root": true,"env": {"node": true,"vue/setup-compiler-macros": t…

128.最长连续序列

给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&#xff1a;nums [100,4,200,1,3,2] 输出&#xff1a;4 解…