Spring-Transaction

27 篇文章 0 订阅

1 Transaction

A原子性
C一致性
I 隔离性
D 持久性

事务并发引起的问题
脏读、不可重复读、虚(幻读)读

数据库的隔离级别
读未提交、读已提交、可重复读、串行化

脏读	不可重复读	虚读

读未提交 × × ×
读已提交 √ × ×
可重复读 √ √ ×
串行化 √ √ √

mysql默认的隔离级别是什么:可重复读(但是不会导致虚读问题)

2 Spring事务

2.1核心接口

PlatFormTransactionManager
TransactionStatus
TransactionDefinition
在这里插入图片描述

2.2 PlatFormTransactionManager

平台事务管理器
DataSourceTransactionManager
HibernateTransactionManager

2.3 TransactionStatus

事务的状态

在这里插入图片描述

2.4 TransactionDefinition

事务的定义:事务的名称、只读、隔离级别、传播行为、超时时间

2.4.1 传播行为Propagation

多个方法之间如何共享事务 → 方法之间包含调用关系
methodA、methodB

methodB(){
methodA();
}

2.4.1.1 REQUIRED(默认)

如果没有事务则新建一个;如果包含事务,则加入进来,作为一个事务。

一荣俱荣,一损俱损:要么一起提交,要么一起回滚。

methodB调用methodA
methodB发生异常:都回滚
methodA发生异常:都回滚

2.4.1.2 REQUIRES_NEW

如果没有事务则新建一个;如果包含事务,仍然新增一个新的事务。
自私型事务:外围不能影响内部,内部可以影响外围。

methodB调用methodA
methodB发生异常:B回滚,A正常提交
methodA发生异常:A、B都回滚

2.4.1.3 NESTED(内部方法相较于外部方法不重要)
如果没有事务则新建一个;如果包含事务,则以嵌套事务的方式运行。

无私型事务:外围影响内部,内部不会影响外围。

PDD → 吸引新用户

register(){
@Nested
sendcoupon();

3 事务案例

以下所有的案例都需要使用到事务管理器 → 依赖于DataSource
在这里插入图片描述

3.1 依赖

在这里插入图片描述

3.2 TransactionTemplate

在这里插入图片描述
在这里插入图片描述

3.3 TransactionProxy

类似于我们昨天讲的SpringAOP

3.4 aspectj-advisor

3.5 声明式事务(最简单、最常用)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值