spring - PROPAGATION_NESTED vs PROPAGATION_ Spring 需要吗?

标签 spring transactions

实际在寻找PROPAGATION_NESTED(如果存在当前事务,则在嵌套事务中执行)与PROPAGATION_Required(支持当前事务)之间的区别。

下面是简单的用例

例如,在主类中我们调用method1并使用jdbc [Transaction1]创建客户。尚未提交。现在我们在主类中调用method2,并为刚刚创建的客户[Transaction2]创建帐户。现在提交。我们可以将事务2称为嵌套事务。

根据我现在的理解,如果我们将交易定义定义为PROPAGATION_NESTED

事务2将被视为嵌套,但是如果我们将其定义为PROPAGATION_Required,它将支持当前事务。那么嵌套和必需之间有什么区别?

最佳答案

PROPAGATION_NESTED只能与DataSourceTransactionManager和JDBC3驱动程序一起使用。它使用保存点以便能够回滚事务的某些部分(即,在Spring术语中构成嵌套事务的部分)。请参阅javadoc of Connection以了解保存点如何工作。

要求是完全不同的。这仅意味着:如果已经存在事务,请执行此事务中的工作;否则,开始一个新事务,执行工作,然后提交事务。

关于spring - PROPAGATION_NESTED vs PROPAGATION_ Spring 需要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683929/

相关文章:

java - 如何将 application.properties 中的值分配给 @Qualifier

Spring编程Jdbc事务回滚不起作用

java - 仅 Spring Kafka 事务消费者

java - @ReplaceWithMock 不使用 Springmockito 注释进行模拟

java - Spring MVC 应用程序和静态内容更新

spring - 在应用程序启动之前运行自定义代码的不同方式

java - 以编程方式刷新 spring mvc 资源包

sql-server - 如何保持事务和ssis包执行相互等待?

spring - 如何将(@Autowired)@Service注入(inject)ConstraintValidator?

sql-server - SQL Server - Tempdb 与数据库日志的使用