Spring 学习总结笔记【十二、Spring事务管理】

往期文章:

Spring 学习总结笔记【一、快速入门】
Spring 学习总结笔记【二、IoC-控制反转】
Spring 学习总结笔记【三、注解开发】
Spring 学习总结笔记【四、整合Junit】
Spring 学习总结笔记【五、配置数据源】
Spring 学习总结笔记【六、整合Mybatis】
Spring 学习总结笔记【七、AOP面向切面编程】
Spring 学习总结笔记【八、集成Web环境】
Spring 学习总结笔记【九、SpringMVC快速入门】
Spring 学习总结笔记【十、SpringMVC数据响应与请求】
Spring 学习总结笔记【十一、SpringMVC拦截器】

一、Spring事务简介

  • 事务作用:在数据层保障一系列的数据库操作同成功同失败
  • Spring事务作用:在数据层或业务层保障一系列的数据库操作同成功同失败

二、案例引入

模拟银行账户间转账业务

  • 需求:实现任意两个账户间转账操作
  • 需求微缩:A账户减钱,B账户加钱

数据库如下:
在这里插入图片描述


dao层接口如下:
在这里插入图片描述


service层的实现如下

在这里插入图片描述


我们来测试一波
在这里插入图片描述

在这里插入图片描述

数据库的内容也更改了,确实达到了我们的预期,目前看来是没有任何问题的


但是我们现在在 transfer 转账操作之间人为添加一句bug

在这里插入图片描述


再运行一次,这次就出问题了
在这里插入图片描述

程序只执行了转出操作,就遇到了异常,转入操作为未执行。这就导致了数据库中只记录到了转出的信息。

结果分析:
① 程序正常执行时,账户金额 A减B加,没有问题
② 程序出现异常后,转移失败,但是异常之前操作成功,异常之后操作失败,整体业务失败


三、Spring事务管理开启步骤

① 在业务层接口上添加 Spring 事务管理 @Transactional

在这里插入图片描述
注意:Spring注解式事务通常添加在业务层接口中而不会添加到业务层实现类中,降低耦合;注解式事务可以添加到业务方法上表示当前方法开启事务,也可以添加到接口上表示当前接口所有方法开启事务。


② 设置事务管理器

在这里插入图片描述

我此处共设置了 3 个配置类,我将事务管理器配置在了 JdbcConfig 中

在这里插入图片描述

注意:事务管理器要根据实现技术进行选择;Mybatis框架使用的是 JDBC 事务


③ 开启注解式事务驱动 @EnableTransactionManagement

在这里插入图片描述


此时我们再对刚才有异常的程序再执行一次。

  • 我们先将数据库归为原样

在这里插入图片描述

  • 再进行测试

在这里插入图片描述

在这里插入图片描述

程序异常,但数据库的信息未改动


四、事务属性

在这里插入图片描述

下期文章:

Spring 学习总结笔记【十三、SpringMVC异常处理器】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值