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

news/2025/2/14 5:24:03/

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.ppmy.cn/news/1415654.html

相关文章

深入探索MySQL:成本模型解析与查询性能优化

码到三十五 &#xff1a; 个人主页 在数据库管理系统中&#xff0c;查询优化器是一个至关重要的组件&#xff0c;它负责将用户提交的SQL查询转换为高效的执行计划。在MySQL中&#xff0c;查询优化器使用了一个称为“成本模型”的机制来评估不同执行计划的优劣&#xff0c;并选择…

实例解释遇到前端报错时如何排查问题

前端页面报错&#xff1a; 1、页面报错500&#xff0c;首先我们可以知道是服务端的问题&#xff0c;需要去看下服务端的报错信息&#xff1a; 2、首先我们查看下前端是否给后端传了id: 我们可以看到接口是把ID返回了&#xff0c;就需要再看下p_id是什么情况了。 3、我们再次请…

JavaEE初阶——多线程(一)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享多线程的第一部分:引入线程以及创建多线程的几种方式 此文章是建立在前一篇文章进程的基础上的 如果有不足的或者错误的请您指出! 1.认识线程 我们知道现代的cpu大多都是多核心…

(数字化)招标采购大数据到底怎么落地?

数据要素是数字经济时代的重要战略资源。2024年政府工作报告中提出深入推进数字经济创新发展&#xff0c;制定支持数字经济高质量发展政策&#xff0c;积极推进数字产业化、产业数字化&#xff0c;促进数字技术和实体经济深度融合&#xff1b;深化大数据、人工智能等研发应用&a…

AcWing-5:多重背包问题 II

5. 多重背包问题 II - AcWing题库 #include <bits/stdc.h> using namespace std; const int MAXN11050; //个数是1000*log2(2000)&#xff1b;1000以log以2为底2000的数 const int MAXV2005; int temp_v[MAXN]; //存储实际每个的体积 int temp_w[MAXN]; …

【数据库】GROUP BY 详解、示例、注意事项

一、基本介绍 GROUP BY 语句在 SQL 中用于将来自数据库表的记录分组&#xff0c;以便可以对每个组执行聚合函数&#xff08;如 COUNT(), MAX(), MIN(), SUM(), AVG() 等&#xff09;。使用 GROUP BY 时&#xff0c;数据库会根据一个或多个列的值将结果集分为多个分组&#xff…

怎么用AI大模型解决实际问题?(从我亲自实操的一个案例讲起)

ONE. 一切要从我安利我妈妈用豆包APP说起… 我妈妈之前没学习过抖音运营相关知识&#xff0c;但是最近想在抖音上做面向本地用户的房产号&#xff0c;问我该如何做。 因为我最近都在研究职场AI提效上&#xff0c;暂时没有精力去研究这个全新的领域。所以我就想到了直接让AI教…

2024Mathorcup(妈妈杯)数学建模C题python代码+数据教学

2024Mathorcup数学建模挑战赛&#xff08;妈妈杯&#xff09;C题保姆级分析完整思路代码数据教学 C题题目&#xff1a;物流网络分拣中心货量预测及人员排班 因为一些不可抗力&#xff0c;下面仅展示部分代码&#xff08;很少部分部分&#xff09;和部分分析过程&#xff0c;其…