也许是个很简单的问题,请教一下大家。
Spring使用的是声明式事务管理。
在程序中A方法调用了B方法;B方法调用了C方法。
A和C方法都是PROPAGATION_REQUIRED方式事务管理
B方法没有事务管理的
请问C方法是和A方法进行了事务合并,还是新创建了事务
Spring使用的是声明式事务管理。
在程序中A方法调用了B方法;B方法调用了C方法。
A和C方法都是PROPAGATION_REQUIRED方式事务管理
B方法没有事务管理的
请问C方法是和A方法进行了事务合并,还是新创建了事务
属于同一个事务,B方法和C方法中出现异常仍然会回滚
楼主可以自己试一下
是统一配置与管理的吧。你应该是一个业务调用一个业务方法,当然务业方法里可能会调多个DAO,这是一个事务,如果你不是这种形式,那你要改一改代码。
B没有事务管理
调用A时开启事务
调用B时依然使用 A的事务
调用C时也是依然使用 A的事务PROPAGATION_REQUIRED方式 有事务使用当前事务,没有事务开启新的事务
好像是PROPAGATION_REQUIRED_NEW
有点忘记了
而且也不是声明式事务就不能service层的方法互相调吧
PROPAGATION_NESTED方式才是事务嵌套
单纯就你这个问题而言
c是使用的a的事物。也就是他们共享一个事物,如果c是REQUIRES_NEW 那么c将新启动一个事物,并将a的事物挂起。