当前位置: 代码迷 >> 综合 >> springboot事务管理------@Transactional
  详细解决方案

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

热度:67   发布时间:2023-12-16 01:52:41.0

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

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

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

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

在没有使用事务注解时:

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

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

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

此时去看一下数据库:

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

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

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

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

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

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

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

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

  相关解决方案