咱们在写代码的时候,特地是用到事务注解的时候,往往就是加一下 @Transaction,或者 @Transaction(rollbackFor = Exception.class), 却没有想过加和不加有什么区别,rollbackFor 能够写哪些值。
明天咱们就把这个讲清楚
是什么
@Transaction 是 spring 治理事务的注解,如果某个办法须要更新数据,那么就须要增加该注解,否则就无奈保留胜利。
默认什么都不写
这种状况,rollbackFor 的默认值为 UncheckedException(mark, 什么是 UncheckedException, 下一篇文章学习), 包含 RuntimeException 和 Error
当咱们间接应用 @Transactional 不指定 rollbackFor 时,默认会回滚运行时异样及其子类,也就是 RuntimeException 及其子类,如果产生了 Exception 异样就不会回滚,因为 Exception 是 RuntimeException 的父类。
指定异样
咱们个别都指定 rollbackFor= Exception.class, 标识如果是 Exception 类型的异样都会回滚,Exception 是所有异样的父类,这样就都能回滚了。
异样关系图如下
本文由博客一文多发平台 OpenWrite 公布!