简单了解下Spring的传播级别NESTED是怎么实现的

传播级别NESTED的作用是在当前方法调用子方法时,如果子方法发生异常,只回滚子方法执行过的SQL,而不回滚当前方法的事务 。

那该传播级别是怎么做到只回滚子方法执行过的SQL,而不回滚当前方法的事务的呢?

大部分的数据库,可以在一段sql语句中设置一个标志位,如果后面的代码执行出现了异常,那么也只会把数据回滚到这个标志位所对应的数据状态,然后就不会再回滚了,所以在标志位之前对数据做的操作还会保留着。该标志位在数据库的概念被称为保存点,但是不是所有的数据库都支持保存点技术,所以当数据库不能支持保存点技术时,Spring就会新建一个事务去运行代码,这样就做到了事务隔离,子方法有子方法的事务,当前方法有当前方法的事务,出现问题时,也只会根据自己当前的事务做回滚操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值