事务详解
外部起事物,内部起事物,内外都无Try Catch
外部异常总结:内外都无try Catch的时候,外部异常,全部回滚。
内部异常总结:内外都无try Catch的时候,内部异常,全部回滚。
外部起事物,内部起事物,外部有Try Catch
外部异常总结:外部有try Catch时候,外部异常,不能回滚(事物错误)
内部异常总结:外部有try Catch时候,内部异常,全部回滚
外部起事物,内部起事物,内部有Try Catch
外部异常总结:内部有try Catch,外部异常,全部回滚
内部异常总结:内部有try Catch,内部异常,全部不回滚(事物失败);
外部起事物,内部起事物,内外有Try Catch
外部异常总结:内外都有try Catch,外部异常,事物执行一半(事物失败)
内部事物总结:内外都有try Catch,内部异常,事物全部不会滚(事物失败)
嵌套事物总结
1、内外都无try Catch的时候,外部异常,全部回滚。
2、内外都无try Catch的时候,内部异常,全部回滚。
3、外部有try Catch时候,内部异常,全部回滚
4、内部有try Catch,外部异常,全部回滚
5、友情提示:外层方法中调取其他接口,或者另外开启线程的操作,一定放到最后!!!(因为调取接口不能回滚,一定要最后来处理)
总结:由于上面的异常被捕获导致,很多事务回滚失败。如果一定要将捕获,请捕获后又抛出RuntimeException(默认为异常捕获RuntimeException)。
注:默认事务类型
参考文献:https://blog.csdn.net/yangchangyong0/article/details/51960143