PROPAGATION_REQUIRED PROPAGATION_NESTED

Spring API上说nested在当前有事务时在事务中运行,其他和required一样(Execute within a nested transaction if a current transaction exists, behave like PROPAGATION_REQUIRED else.)这句话没看懂,required也是支持当前事务的啊,还是这个else并不是指 if a current transaction exists呢,得查查nested能不能自己新开一个事务。


Reference里说nested有多个savepoint,内部transaction可以回滚,required如果内部的transaction回滚会抛出异常。

他们的共同点,就是都可以嵌套,就算有子transaction的话,都运行在一个数据库事务中。

nested只能在JDBC3.0以上驱动的支持savepoint的 DataSourceTransactionManager中使用

============

Execute within a nested transaction if a current transaction exists, behave like PROPAGATION_REQUIRED else.这句话好像是说当前有事务的话,则运行一个嵌套的事务吗。和required的“Support a current transaction”貌似有区别。required只是简单的support当前事务,并不代表会运行一个嵌套事务。根据reference的讲法,spring有一个逻辑事务的概念,nested运行一个逻辑上的嵌套事务,用savepoint回滚。而required虽然也是运行一个逻辑的嵌套事务,但是没有savepoint支持,回滚会被抛出异常,算不上完整的嵌套事务

转载于:https://my.oschina.net/ajavaloser/blog/79425

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值