SpringBoot 事务管理Transactional 数据回滚 数据一致性

SpringBoot 事务的属性rollbackFor 与 propagetion

介绍

SpringBoot当中的事物他保证了一致性,要么全部一起成功(提交),要么一起失败,失败(回滚)后数据会回到当初的样子,是一组操作的集合。

事物类型

  • 开启事物
  • 提交事物
  • 回滚事物

案例

java 复制代码
   @Override
    public void insert(Test t) {
        classesMapper.delete(1);//删除班级
        int n =1/0;//这里会发送异常
        testMapper.delete(1);//根据班级删除学生
    }

这是一个删除数据的方法,先删除班级,然后根据班级ID删除班级下的学生,但是走到第二行" int n =1/0;"这里就会抛出异常,而且删除学生的方法并没有被执行,这样就导致了数据不一致。这种情况就可以使用事物来操作,发生了异常就回滚到之前的数据,保证了数据的完整性。要么一起成功,要么一起失败。

开启事物前置条件

表引擎必须为,InnoDB

开启事物

@Transactional 在方法上添加 ,这样下来要么都删除成功,如果发送异常两个表的数据都不变化(回滚)。

开启事物 -> 发送错误-》提交事物-》回滚事物

java 复制代码
 @Override
    @Transactional //开启事物
    public void insert()  {
            classesMapper.delete(1);//删除班级
            int n =1/0;//这里会发送异常
            testMapper.delete(1);//根据班级删除学生
    }

不同位置上添加

  • 方法上添加:当前这个方法开启事物管理
  • 类上:类中所有的方法开启事物管理
  • 接口上:接口所有实现类的方法交给事务管理
相关推荐
小小、码农3 分钟前
〖Linux文件系统〗:彻底打通文件 IO 全链路
linux·开发语言·数据结构·c++·系统
我的div丢了肿么办9 分钟前
go语言中如何安装第3方的包
后端·go
弹简特13 分钟前
【Java项目-企悦抽】13-奖品管理模块-奖品列表和创建奖品的实现
java·开发语言·网络·springboot
Rosanci17 分钟前
从零到合入主线:我的 DeepSeek Harness 开源贡献实战手记
开发语言·前端·开源
小蒜学长20 分钟前
基于Spring Boot+Vue的“禾源”农产品销售系统设计与实现(代码+数据库+LW)
java·spring boot·后端·农产品销售系统·产品溯源
光年200021 分钟前
Mock-Server开箱即用的Mock服务
java·maven·mock·jetty
弹简特22 分钟前
【Java项目-企悦抽】14-活动管理模块01-创建活动的实现
java·开发语言·springboot
用户EasyAdminBlazor22 分钟前
EasyAdminBlazor 审批事务:为什么审批失败必须全部回滚?
后端
驭渊的小故事24 分钟前
MyBatis 入门:从 JDBC 到优雅操作数据库(一)
笔记·sql·spring
墨鱼老师25 分钟前
SpringBoot+Vue 毕设项目开发踩坑记录(前后端分离)
vue.js·spring boot·毕业设计·课程设计·前后端分离·java 毕设