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

不同位置上添加

  • 方法上添加:当前这个方法开启事物管理
  • 类上:类中所有的方法开启事物管理
  • 接口上:接口所有实现类的方法交给事务管理
相关推荐
z落落2 分钟前
C# 静态成员 vs 非静态成员(调用规则+内存特点)+只读和常量 const常量 / readonly / static readonly 三者终极区别
java·开发语言·c#
zhangfeng11334 分钟前
超算中心 高性能计算 slurm的linux版本 centos7,如何安装docker,如何安装torch2.4
linux·运维·服务器·开发语言·人工智能·机器学习·docker
java1234_小锋8 分钟前
LangChain4j 开发Java Agent智能体- 整合SpringBoot4
java·开发语言·langchain4j
肌肉娃子9 分钟前
20260603.记一次 Doris FE “幽灵卡死”引发的惨案:从表象到真凶的追凶实录
后端
basketball61611 分钟前
C++进阶:3. unique_ptr 现代C++内存管理的基石
java·jvm·c++
我不是懒洋洋15 分钟前
从零实现一个Redis客户端:RESP协议与网络编程
开发语言·c++
zzqssliu17 分钟前
跨境代购系统的物流和通知模块重构思考:从设计模式到生产落地
java·设计模式·重构
小小码农Come on20 分钟前
Qt::WA_StyledBackground属性的作用
开发语言·qt
appearappear21 分钟前
一句sql 根据明细数据状态,精确更新一个主单主状态
java
许彰午23 分钟前
04_Java数组操作全解
java·开发语言·python