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);//根据班级删除学生
    }

不同位置上添加

  • 方法上添加:当前这个方法开启事物管理
  • 类上:类中所有的方法开启事物管理
  • 接口上:接口所有实现类的方法交给事务管理
相关推荐
Nturmoils2 分钟前
只备份一个 schema,别把整库都搬走
后端
2501_933923254 分钟前
统一功能:统一返回格式+统一异常处理
spring·java-ee·状态模式·统一数据返回
妙码生花8 分钟前
利用AI从零学Go并完成实战项目,完工总结:目录结构
前端·后端·go
妙码生花12 分钟前
利用AI从零学Go并完成实战项目,完工总结:商业级开源产品定位和核心特性介绍
前端·后端·go
程序员cxuan23 分钟前
GPT-6 Astra 的提示词泄露了,里面居然藏着个保安?
人工智能·后端·程序员
wzdark31 分钟前
基于链表的内存池设计与内存复用机制4
java·数据结构·链表
苍何37 分钟前
WorkBuddy + 飞书的 8 种神仙用法(建议收藏)
后端
Captaincc42 分钟前
掘金AI用量统计v0.1.0大更新-支持桌面宠物自定义和订阅额度卡片
前端·后端
潜创微科技42 分钟前
IT6520:USB-C 转 MIPI 高集成控制器,DP 1.4a 转 MIPI 单芯片搞定 4K120 显示
c语言·开发语言·低延迟·掌机·联阳
cnkeysky1 小时前
idea 中的 maven 项目重新加载子模块
java·idea