最近对事务做了多次测试,下面讲下测试(不是同类调用)的结果
1.主方法a有事务required,子方法顺序b、c , b方法为new,c方法为required, b有异常,把异常抛给主事务,主事务回滚所有写操作;c有异常,主事务回滚所有写操作,但是b事务与主事务是独立的,b事务中的写操作成功
2.主方法a无事务,子方法顺序b、c , b方法为new,c方法为required,bc是2个独立的事务, b事务相当于required,bc顺序不同会导致不同的结果,b抛出异常,程序终止,c方法写操作失败 ; c抛出异常,程序终止,b方法写操作成功,c方法写操作失败,事务回滚 <b中如果多个写操作,则多个写操作被打包进一个事务中,异常时全部回滚 >
3.主方法a无事务,子方法顺序b、c 都无事务, c有异常,程序终止,异常终止处以上所有写操作都执行成功(事务托管给数据库处理)
同类中方法调用,参考:https://my.oschina.net/vshcxl/blog/798297