在我的应用程序中,有多个步骤,其中将通过多种方法对数据库进行多次提交。例:
A -> B -> C -> D ->E -> F -> G
A呼叫B,再呼叫C。然后B呼叫D。D呼叫E,依此类推。所有这些方法都有一些数据库操作。据我了解PROPAGATION_REQUIRED(声明式事务管理- 春天推荐的方式),如果 E* 成功完成,则事务(以及 E中的 操作将被提交)。现在,由于某些例外, F 应该导致回滚。我想 从 A 做起的 所有事情都 回滚。是否可以通过声明式事务管理?还是应该使用程序化交易管理? *
PROPAGATION_REQUIRED
谢谢。
首先,从某种意义上说,不支持“嵌套”事务,即afaik。
然后,propagation=REQUIRED意味着所有具有该传播的方法将:
propagation=REQUIRED
这意味着在您的方案中,失败F将回滚整个事务(因为它是单个事务,由A发起,并传播到其他方法)
F
A