springboot事务管理------@Transactional

spring事务的分类:声明式事务、编程式事务

spring事务的原理:通过AOP,环绕通知进行拦截。

使用spring事务的注意事项:不能try.(因为要将异常抛出给外层)

默认开启事务注解。(不用添加@EnableTransactionalManagment)

在没有使用事务注解时:

接上篇博客中已有项目,在service层处理事务,在不添加事务时,将service层的方法改为:

debug启动项目,访问url,传入age为0:

在执行完第17行,准备执行第18行之前

此时去看一下数据库:

这条数据已经插入到数据库了。然后我们f6继续向下执行第18行:

浏览器也出现了异常界面:

此时抛出了算数异常。也就是说在我们没有使用事务的时候,在执行插入语句之后,数据就立刻进入数据库中,无论后面是否会出现异常,该数据都无法还原。

下面使用@Transactional开始事务测试:

debug启动,依然在执行完第17行时,我们查看数据库:

此时发现,与不使用事务时的情况不同,使用事务时,并没有在执行insert方法之后,立即保存到数据库中。然后继续f6向下执行:

依然抛出异常,此时再看数据库:

数据最终也没能保存。说明在使用事务注解时,该方法中出现异常时,数据就不会保存到数据库中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

QYHuiiQ

听说打赏的人工资翻倍~

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

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

打赏作者

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

抵扣说明:

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

余额充值