Spring tx事务演示结果

最外层事务REQUIRED①第一个事务REQUIRED第一个事务异常了,如果执行完之后抛异常,并没有自己catch,则第二个事务没有执行,那么不管最外层事务有没有手动catch,都会回滚,①②等于没有执行。如果①异常了自己手动catch了那所有的事务都是正常执行
②第二个事务REQUIRED如果②异常了,自己没有手动catch,同样不管最外层事务有没有手动catch,都会回滚,①②等于没有执行。如果②异常了自己手动catch了那所有的事务都是正常执行
最外层事务REQUIRED①第一个事务REQUIRES_NEW事务①如果抛出异常了,并没有在最外层自己手动catch,直接自己回滚了,然后把异常抛出给最外层框架了,最外层把事务回滚了。如果在最外层自己手动catch,,最外层把事务提交但是事务②并没有执行
②第二个事务REQUIRES_NEW如果②异常了,自己回滚,最外层事务手动catch了,那么最外层事务会提交,如果最外层没有手动catch
最外层事务REQUIRED①第一个事务NESTED如果①事务抛异常了,事务有回滚点直接回滚为回滚点,如果最外层事务没有catch则外层事务会回滚,如果被外层事务catch了,则外层事务会提交。
②第二个事务NESTED如果②抛异常了,则②的事务会回滚,如果外层没有手动catch事务则也会被回滚,如果外层手动catch了则事务会提交
最外层事务REQUIRED①第一个事务REQUIRED第①个事务异常了,如果执行完之后抛异常,则自己会设置回滚true(this.rollbackOnly = true),外层事务没有catch,外层事务会回滚。外层事务catch了,在commit中同样会选择rollback
②第二个事务REQUIRED②抛异常了,则自己会设置回滚true(this.rollbackOnly = true),如果外层事务没有catch,则会回滚,如果外层catch了,同样会在在commit中同样会选择rollback
最外层事务REQUIRED①第一个事务REQUIRED,设置了noRollbackFor = ArithmeticException.class如果①抛ArithmeticException异常了,则第①事务回滚的时候会走commit但是不会真正的提交,如果没有在外层事务中手动catch异常,抛出的ArithmeticException会被spring的最外层事务catch然后回滚。如果在外层事务中手动catch异常,则会被spring的最外层事务直接提交,数据①有记录
②第二个事务REQUIRED,设置了noRollbackFor = ArithmeticException.class如果②抛ArithmeticException异常了,则第②事务回滚的时候会走commit但是不会真正的提交,如果没有在外层事务中手动catch异常,抛出的ArithmeticException会被spring的最外层事务catch然后回滚。如果在外层事务中手动catch异常,则会被spring的最外层事务直接提交,数据①②有记录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值