Spring事务管理

在Java应用中,@Transactional注解用于管理数据库事务。当不加此注解时,如果代码出现异常,会导致部分操作未执行。加了注解后,如发生异常,整个事务会被回滚,确保数据一致性。例如,删除部门及旗下员工的操作会作为一个事务,要么全部完成,要么都不执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务:是一组操作的集合,它是一个不可分割的工作单位,要么同时成功,要么同时失败

操作:

  1. 开启事务:start transaction / begin;
  2. 提交事务:commit;
  3. 回滚事务:rollback;

案例: 删除部门,同时删除该部门下的所有员工

以下代码中:不加@Transactional注解 程序运行到 int I = 1/0 时

                    由于出现异常不会执行之后的代码 

                     因此会出现只删除了部门 没有删除部门员工的情况

@Autowird
private DeptMapper deptmapper;

@Autowird
peivate EmpMapper empmapper;


@Transactional
public Result delete(Integer id){

    deptmapper.delete(id);//删除部门

    int i = 1/0;//此时出现RuntimeException异常    

    empmapper.delete(id);//删除该部门下的所有员工
}

添加@Transactional注解之后 

deptmapper.delete(id); 和 empmapper.delete(id);就会形成一个事务 

俩者会同时成功或失败 不存在只执行完成其中一个的结果

方法中出现异常 俩者都会执行失败 回滚事务

补充:

位置:

@Transactional注解可以在方法上\类上\接口上 

作用:

将当前方法交给spring进行事务处理  方法执行前  开启事务; 成功执行后 提交事务; 出现异常  回滚事务

rollbackFor属性

//rollbackFor设置需要回滚的异常类型
@Transactional(rollbackFor={ServiceException,NullPointException})

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值