JavaWeb框架复习笔记-Spring(事务管理的概念以及源码分析)

事务的基本概念

一组业务操作,要么都成功,要么都是失败,从这里延申出4个特性(ACID):

1.原子性,我们认为原子不可分割,所以这是事务的完整性

2.一致性,这描述的是事务中的完成情况,结果要一致的,典型的就是转账,一个少钱了,一个肯定要多钱

3.隔离性,在并发的情况下,每个事务是独立进行的,不互相影响

4.持久性,就是被提交的事务的修改是永久的,不可逆转

针对上面的隔离性,有三个问题和四个解决方案
问题:
问题1:脏读:一个事务读到另一个事务没有提交的数据

问题2:不可重复读:一个事务读到另一个事务已提交的数据(update)

问题3:虚读(幻读):一个事务读到另一个事务已提交的数据(insert)

解决方案(隔离级别):
1.read uncommitted:读未提交。

2.read committed:读已提交。

3.repeatable read:可重复读。

4.serializable :串行化。

在java源码中
在这里插入图片描述
事务的一般操作是这样的
在这里插入图片描述
或者是带有保存点(SavePoint)的,这种情况是针对一个事务里面有些操作是必须完成的,有些是可选的,那么可以在他们之间设置一个保存点
在这里插入图片描述

Spring的事务管理

1.使用前导入相应的jar包(spring-tx.jar)
在这里插入图片描述
2.查看包内的三个顶级接口及了解他们的作用
在这里插入图片描述
1.PlatformTransactionManager 平台事务管理器,spring要管理事务,必须使用事务管理器
进行事务配置时,必须配置事务管理器。(必须要有)

2.TransactionDefinition:事务详情(事务定义、事务属性),spring用于确定事务具体详情,
例如:隔离级别、是否只读、超时时间等
进行事务配置时,必须配置详情。spring将配置项封装到该对象实例。(必须要有)

3.TransactionStatus:事务状态,spring用于记录当前事务运行状态。例如:是否有保存点,事务是否完成。(了解即可,因为spring底层会根据状态进行相应操作。)

3.使用事务平台管理器要导入相应的jar包
常见的有两种,一是jdbc的,二是hibernate的,所以导入这两个依赖包
在这里插入图片描述
4.打开 PlatformTransactionManager*接口可以看到两个常见的事务管理器的实现类
在这里插入图片描述
这个接口的工作原理
由下图可以看出:
1.根据事务详情得到事务状态
2.根据事务状态进行提交
3.根据事务状态进行回滚
在这里插入图片描述
5.打开TransactionStatus接口查看详情
在这里插入图片描述
6.打开TransactionDefinition接口查看详情
在这里插入图片描述
7.传播行为的介绍
在这里插入图片描述
传播行为就是在两个业务之间如何共享事务

1.PROPAGATION_REQUIRED , required , 必须 【默认值】
支持当前事务,A如果有事务,B将使用该事务。
如果A没有事务,B将创建一个新的事务。

2.PROPAGATION_SUPPORTS ,supports ,支持
支持当前事务,A如果有事务,B将使用该事务。
如果A没有事务,B将以非事务执行。

3.PROPAGATION_MANDATORY,mandatory ,强制
支持当前事务,A如果有事务,B将使用该事务。
如果A没有事务,B将抛异常。

4.PROPAGATION_REQUIRES_NEW , requires_new ,必须新的
如果A有事务,将A的事务挂起,B创建一个新的事务
如果A没有事务,B创建一个新的事务

5.PROPAGATION_NOT_SUPPORTED ,not_supported ,不支持
如果A有事务,将A的事务挂起,B将以非事务执行
如果A没有事务,B将以非事务执行

6.PROPAGATION_NEVER ,never,从不
如果A有事务,B将抛异常
如果A没有事务,B将以非事务执行

7.PROPAGATION_NESTED ,nested ,嵌套
A和B底层采用保存点机制,形成嵌套事务。

这上面就是事务的基本介绍,回头写个典型的转账案例就比较好理解

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值