【SSM学习】01-4-Spring 事务

SSM(B站黑马)学习笔记

01-1-Spring概述
01-2-Spring IOC
01-3-Spring AOP
01-4-Spring 事务
02-SpringMVC
03-SSM整合
04-Maven高级
05-SpringBoot
06-MyBatisPlus



前言

SSM(B站黑马)学习笔记 01-4-Spring 事务


01-4-Spring 事务

事务的概述

Spring事务的简介

Spring事务有什么好处呢,因为我们业务层实际上是组合了若干数据层的功能,所以说在业务层开事务可以保障调用的多个数据层操作处于同一个事务,同成功同失败。这就是Spring事务的一个作用, 他是为了保障组合功能的过程中事务生效。

它是如何保障的呢,其实就通过了一个接口,Spring中提供了一个叫做PlatformTransactionManager的接口—平台事务管理器,在这个接口中提供两操作,一个commit一个rollbgack。说的简单一点就是Spring在它的业务层开了个事务,提交时候大家都提交,回滚的时候大家都回滚。Spring给出了一个最基本的事务管理器实现类DataSourceTransactionManager,给出对应的DataSource就能在业务层开启对应的事务,但是他的内部用的是JDBC的事务,只要技术用的JDBC的技术就可以用它这个事务管理器的实现对象。很巧合的是Mybatis内部用的就是JDBC的事务,所以说Spring整合Mybatis如果要是用Spring的事务,用这个实现就行。

Spring事务快速入门




案例初始化
pom.xml->配置SpringConfig注解开发->整合Mybatis、JUnit->转账操作

正常执行转账操作 Tom-100 Jerry+100

当出现异常时 Tom-100 Jerry不变,显然不正常

Spring事务开启
在业务层接口添加开启事务注解(实现类也行但不建议)

配置事务管理器并告知Spring开启注解事务扫描

再次运行 金额都重置为1000 运行出现异常,事务回滚金额不变

Spring事务角色

Spring事务相关配置

rollbackFor

有些异常是不参与回滚的,只有error系的、运行时异常(比如NullPointException)其余都不会自动回滚,如下图

使用rollbackFor设置事务回滚异常 再次遇到IOException就会回滚事务(金额已重置1000)

propagation事务传播行为


案例初始化


try{}finally{}语句,无论是否异常都运行finally
当程序正常运行finally会执行,金额加减正常,日志也加上了

但程序运行异常,finally会被当初一个整体进行事务回滚 导致金额跟日志都被回滚无事发生 同成功同失败

解决办法:使用propagation让Log开启新事务

再次运行 出现异常,金额不变日志成功添加


注:

该内容是根据B站黑马程序员学习时所记,相关资料可在B站查询:黑马程序员2022最新SSM框架教程_Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus企业实用开发技术

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值