SpringBoot 事务管理Transactional 数据回滚 数据一致性
介绍
SpringBoot当中的事物他保证了一致性,要么全部一起成功(提交),要么一起失败,失败(回滚)后数据会回到当初的样子,是一组操作的集合。
事物类型
- 开启事物
- 提交事物
- 回滚事物
案例
@Override
public void insert(Test t) {
classesMapper.delete(1);//删除班级
int n =1/0;//这里会发送异常
testMapper.delete(1);//根据班级删除学生
}
这是一个删除数据的方法,先删除班级,然后根据班级ID删除班级下的学生,但是走到第二行“ int n =1/0;”这里就会抛出异常,而且删除学生的方法并没有被执行,这样就导致了数据不一致。这种情况就可以使用事物来操作,发生了异常就回滚到之前的数据,保证了数据的完整性。要么一起成功,要么一起失败。
开启事物前置条件
表引擎必须为,InnoDB
开启事物
@Transactional 在方法上添加 ,这样下来要么都删除成功,如果发送异常两个表的数据都不变化(回滚)。
开启事物 -> 发送错误-》提交事物-》回滚事物
@Override
@Transactional //开启事物
public void insert() {
classesMapper.delete(1);//删除班级
int n =1/0;//这里会发送异常
testMapper.delete(1);//根据班级删除学生
}
不同位置上添加
- 方法上添加:当前这个方法开启事物管理
- 类上:类中所有的方法开启事物管理
- 接口上:接口所有实现类的方法交给事务管理