Spring事务管理总结

Spring事务管理机制概述

Spring事务管理模块主要包括3个接口

  • PlatformTransactionManager:事务管理器,主要用于平台相关的事务管理。
  • TransactionDefinition:事务定义信息(隔离级别、传播、超时、只读)通过配置如何进行事务管理。
  • TransactionStatus:事务具体运行状态——事务管理过程中,每个时间点事务的状态信息。

1、PlatformTransactionManager:事务管理器

事务管理器接口主要包括了以下3个方法:

在这里插入图片描述

  • commit():提交事务
  • getTransaction():获取事务状态
  • rollback():事务回滚

PlatformTransactionManager是事务管理的一个接口,不同的ORM持久化框架对该接口具有不同的实现,使用不同框架时,我们调用不同的实现,如下:
在这里插入图片描述
在DataSourceTransactionManager中,使用Connection进行事务管理:

  • 开启事务:connection.setAutoCommit(false);
  • 提交事务:connection.commit();
  • 回滚事务:connection.rollback();

2、TransactionDefinition:事务定义信息
该接口api如下:
在这里插入图片描述
隔离级别包括:

  • 读未提交
  • 读已提交
  • 可重复读
  • 序列化

以上隔离级别安全性逐一升高,这里不再赘述各个隔离级别的优缺点,详情可搜索数据库事务隔离级别。

这里通过第一个方法可获取当前的隔离级别。

事务的传播行为

事务的传播行为用于解决两个被事务管理的方法的相互调用问题。
它具有7种类型:
在这里插入图片描述
主要分为三大类:

  1. Required(默认)、Supports、Mandatory:支持当前事务,A调用B、若A事务存在,那么B和A处于同一个事务。
  2. Requires_New、Not_Supported、Never:不支持原来的事务,A调用B、若A事务存在,那么B和A肯定不处于同一个事务。
  3. Nested:嵌套事务,允许在同一事务设置保存点,回滚保存点。

3、TransactionStatus:事务具体运行状态

同样,该接口的api如下:
在这里插入图片描述
其中,isRollbackOnly()多用于测试,有时候我们只需要知道代码能否执行,但又不想真正插入数据框,那么可用该方法进行测试。

无论事务是否回滚,我们终究将执行提交,如下代码:

try{
   
//操作
}catch(){
   
//rollback
}finally{
   
commit();
}

即,我们进行的回滚操作是对已插入数据进行的一次擦除,擦除结束后需要进行最终提交。

三个接口主要关系

  1. 首先用户管理事务,需要先根据选用的ORM持久层框架配置TransactionManager进行事务管理。
  2. 然后根据TransactionDefinition(事务定义信息),通过Tra
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值