spring的事物配置,默认状态下,只针对 RuntimeException 进行回滚。
而像SQLException并不是RuntimeException,所以这里需要特别注意。
这里困扰了我很久,一直没有想明白为什么在一个事务里面,部分成功,部分失败。可能就是这个原因导致的。
也就是说,一些系统级别的异常,前期都需要转化成 RuntimeException 。这样就可以进行回滚了。
但是这样的只需要修改底层,另外一个偷懒的方法,在每个service类上直接指定rollback = Exception.class。这样所有的异常都会回滚。但是这样有没有副作用,但是不清楚。
异常一直是我没有搞定的一块内容之一,称这个机会研究一下。
为什么需要分check 和unckeck,两者有什么不动点。
如果都是用uncheck,会不会有什么问题?
待续。。。