【spring(四)】Spring事务管理和@Transactional注解

🌈键盘敲烂,年薪30万🌈

目录

Spring中的事务管理

问题抛出:

解决方案:

@Transactional注解:

rollbackFor属性:

propagation属性:

应用:

📕总结


知识回顾:

  • ❓什么是事务

事务是对数据操作的集合,它是数据操作的最小执行单位,也就是说,要么一个事务中操作全部执行完毕,要么全都不执行。

  • 👇事务的四大特性

原子性:事务是数据操作的最小执行单位

一致性:要么全部执行完毕,要么全都不执行

隔离性:事务之间互相独立

持久性:事务提交对数据的修改是永久性的

Spring中的事务管理

问题抛出:

当执行删除部门操作时,该部门下对应的员工也要删除,这两个操作必须保持一致,如果删除部门后程序遇到了异常退出,这就会造成数据不一致。

解决方案:

我们把两个操作看成一个事务,在删除部门时开启事务,删除完员工提交事务,当遇到异常就回滚事务,这样问题就可以解决。

@Transactional注解:

概念:Transctional注解是Spring已经封装好的一个控制事务是否提交和回滚的注解

位置:业务(service)层的方法上、类上、接口上

作用:将当前方法交给spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常,回滚事务。

注意:Transactional修饰的事务默认遇到运行异常才回滚事务,遇到编译异常或其他异常还是会直接退出程序。

rollbackFor属性:

rollbackFor用于自定义遇到哪些异常时回滚事务。

    @Transactional(rollbackFor = Exception.class) //将该方法看作一个事务,遇到异常回滚,但是默认只是遇到运行异常才会回滚
    @Override
    public void deleteById(Integer id) {
        deptMapper.deleteById(id);  //删除部门信息

        empMapper.deleteByDeptId(id);   //删除员工信息
    }
propagation属性:

事务的传播行为:

一个事务的方法被另一个事务方法调用时,另一个事务该如何控制。

常见的事务传播行为(只记前两个就可):

应用:

需求:解散部门时,无论是成功还是失败,都要记录操作日志。

步骤:

  . 解散部门:删除部门、删除部门下的员工

  . 记录日志到数据库表中

📕总结

@Transactional注解用于控制spring事务管理

@rollbackFor可以指定遇到哪些异常回滚

@propagation指定事务的传播行为

  • 80
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 75
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会就选C.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值