事务回滚

事务回滚

rollbackFor

Spring 框架的事务基础架构代码将默认地只在抛出运行时和 unchecked exceptions 时才标识事务回滚。也就是说,当抛出个 RuntimeException 或其子类例的实例时。(Errors 也一样默认地标识事务回滚。)从事务方法中抛出的 Checked exceptions 将 不 被标识进行事务回滚。

  • 让 checked 例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)
  • 让 unchecked 例外不回滚:@Transactional(notRollbackFor=RunTimeException.class)
  • 不需要事务管理的(只查询的)方法: @Transactional(propagation=Propagation.NOT_SUPPORTED)

注意:如果异常被 try{}catch{}了,事务就不回滚了,如果想让事务回滚必须再往外抛 try{}catch{throw Exception}。

上一页