spring事务管理,@Transactional注解的使用

本文介绍了事务的基本概念,包括其作为不可分割的操作单元,以及@Transactional注解中的rollbackFor处理运行时异常和propagation控制事务传播。重点讲解了REQUIRED和REQUIRES_NEW两种传播行为,通过实例说明了事务在服务层中的应用,尤其是REQUIRES_NEW在记录日志时确保数据一致性。

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

一:学习事务是什么,他的作用是什么

      1.事务是一组操作的集合,它是一个不可分割的工作单位。他的作用就是使这组操作要么同时成功,要么同时失败。(举例:但某公司的一个部门,该部门下是不是有很多员工,如果我解散该部门是不是该部门下的员工是不是也得解散,这就使得他们是一个单位。)

二.@Transactional注解当中的两个常见的属性

1.异常回滚的属性:rollbackFor

第一种当出现运行时异常,我删除部门信息的时候可以发现,数据部门数据还是存在的。这个时候是因为运行到int i = 1/0进行了异常处理。此时员工数据不会删除,所以将删除部门的信息进行了回滚。

第二种编译时的异常,我们的事务是怎么处理的。

我们可以看到部门已经删除了,但员工还是保留着。

总结:我们可以得出结论事务会回滚运行时异常,不会回滚编译时异常。

2.事务传播行为:propagation

事物传播行为就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制。

例如:两个事务方法,一个A方法,一个B方法。在这两个方法上都添加了@Transactional注解,就代表这两个方法都具有事务,而在A方法当中又去调用了B方法。

我们默认的是REQUIRED,下面的表格是有哪些传播行为

对于这些事务传播行为,我们只需要关注以下两个就可以了:

  1. REQUIRED(默认值)

  2. REQUIRES_NEW

 接下来我们写一个案例,关于REQUIRES_NEW,写一个日志记录表来记录删除部门的信息

1.自己要建一张部门信息表来记录相关数据,在service层加入事务,

2.让部门业务去调用部门信息业务,着相当于,事务A调用事务B,传播行为是requires_new

结论就是这个部门信息表一定会有数据 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值