Spring面试题-哪些情况事务会回滚

1、 异常情况

  • 未捕获的RuntimeException及其子类异常:这些异常通常被认为是未检查异常(unchecked exceptions)。如果在事务的执行过程中抛出了这类异常,并且没有被捕获处理,事务管理器会自动触发事务的回滚。
  • 显式地捕获并处理但指定回滚的受检查异常(Checked Exception):虽然受检查异常本身不会导致事务自动回滚,但如果在捕获这类异常后,通过编程方式(如手动调用rollback方法)或配置事务管理器(如使用Spring的@Transactional注解并指定rollbackFor属性)来指示回滚,事务也会发生回滚。

2、事务边界内的错误

  • 事务边界内的任何失败操作:事务是一个不可分割的工作单元,它定义了必须一起成功或一起失败的数据库操作集合。如果在这个边界内的任何操作失败(如SQL执行错误、约束违反等),整个事务将被视为失败,并触发回滚。

3、显式调用回滚

  • 编程方式显式调用回滚:在事务处理过程中,可以通过编程方式显式地调用数据库连接(如JDBC中的Connection对象)的rollback方法来触发事务的回滚。

4、跨事务的依赖和调用

  • 多个事务的依赖和调用:当多个事务之间存在依赖关系或相互调用时,一个事务的失败可能会影响其他事务的执行。如果事务管理器配置为支持这种跨事务的依赖和调用,并且检测到依赖的事务失败,它可能会触发当前事务的回滚。但请注意,这通常发生在更复杂的事务管理场景中,并且需要正确配置和处理。

5、外部因素

  • 系统崩溃或数据库故障:在极少数情况下,如果系统崩溃或数据库本身出现故障,导致事务无法完成,数据库可能会根据其恢复机制(如日志恢复)来撤销未提交的事务,这也可以视为一种回滚。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值