(四)Spring Transaction

一、事务回顾

1.事务特性(ACID)
A: 作为一个不可拆分的整体,最小单位
C:一致性
I:隔离性
D:持久性

3.事务并发引起的问题
脏读:一个事务读取到另一个 还未提交的数据
不可重复读:一个是一个事务读取到另一个 已经提交的数据(修改)
幻(虚)读:一个是一个事务读取到另一个 已经提交的数据(新增或删除)
在这里插入图片描述
3.数据库隔离级别
在这里插入图片描述
mysql默认的隔离级别是什么? 可重复读 → mysql不会导致幻读

二、Spring事务管理介绍

1.Spring事务管理常用对象
PlatformTransactionManager
TransactionDefinition
TransactionStatus

2.PlatformTransactionManager——spring事务管理的核心
平台事务管理器,spring要管理事务,必须使用事务管理器
进行事务配置时,必须配置事务管理器。
有多种实现,通过实现此接口,Spring可以管理任何实现了这些接口的事务。开发人员可以使用统一的编程模型来控制管理事务。

常见的事务管理器的实现:
DataSourceTransactionManager ,jdbc开发时事务管理器,采用JdbcTemplate、mybatis
HibernateTransactionManager,hibernate开发时事务管理器,整合hibernate

PlatformTransactionManager api详解:
TransactionStatus getTransaction(TransactionDefinition definition) ,
事务管理器 通过“事务详情”,获得“事务状态”,从而管理事务。 获取事务状态后,Spring根据传播行为来决定如何开启事务;
void commit(TransactionStatus status) 根据状态提交
void rollback(TransactionStatus status) 根据状态回滚

3.TransactionStatus——中间变量
这个接口的作用就是获取事务的状态(回滚点、是否完成、是否新事务、是否回滚)属性
在这里插入图片描述
4.TransactionDefinition
这个接口的作用就是定义事务的名称、隔离级别、传播行为、超时时间长短、只读属性等。
在这里插入图片描述
在这里插入图片描述
传播行为:
如何共享事务 → 包含事务方法之间的互相调用
ServiceA → methodA
ServiceB → methodB

  • Required:如果没有事务,新建一个事务;如果有事务,就加入进来;看为同一个事务 → 一荣俱荣,一损俱损 →要么一起提交了,要么一起回滚。
  • Requires_new:如果没有,新建一个事务;如果有,就当做是一个新的事务。→ 自私 → methodB调用了methodA,methodB发生异常:B回滚,A不回滚 ;methodA发生异常:A回滚,B也回滚。
  • nested:嵌套事务 → 集体和个人关系 → 个人如果不在了,没有影响;集体不在了,人也没了 methodB调用methodA。methodB发生异常:AB都回滚 ;methodA发生异常:A回滚,外围B不回滚。

三、事务案例

转账案例:
PlatformTransactionManager → datasource
在这里插入图片描述
搭建一个转账业务
实现方式1——手动增加事务TransactionTemplate
在这里插入图片描述
在这里插入图片描述
实现方式2——半自动TransactionProxyFactoryBean
在这里插入图片描述
实现方式3——advisor
pointcut:指定方法增加事务
advice:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实现方式4——声明式事务注解(最重要,最常用,最简单)
指哪儿打哪儿
1.打开注解开关
在这里插入图片描述
2.@Transactional
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值