我们如何在 JDBC 中实现嵌套事务?

M S*_*ach 6 spring jdbc

首先让我解释一下嵌套事务的含义。

示例:假设在主类中我们method1使用 jdbc[Transaction1] 调用并创建客户。目前尚未承诺。现在我们调用method2主类并为刚刚创建的客户[Transaction2]创建帐户。现在提交吧。根据您的解释,这些事务将被视为一项事务的一部分(因为最多可以有一项具有连接的事务)。到这里,如果我们比较上面的场景,就会像propagation_requiredSpring中一样。那是对的吗?

现在,如果我们只想提交事务 2 而不是事务 1。那么这个场景就会像propagation_NestedSpring中一样。那是对的吗?

如果我上面的两个假设都是正确的,那么我们如何在 JDBC 中实现嵌套事务呢?

Ola*_*laf 5

这并不完全是嵌套事务的工作方式。如果回滚事务 1,事务 2 也会回滚。使用嵌套事务,您可以回滚事务 2,但仍提交事务 1。

在 JDBC 中,您可以使用保存点来实现此效果。您可以在创建帐户之前调用 Connection.setSavepoint(),如果您想回滚该操作但仍提交客户的创建,则可以回滚到该保存点。

如果您希望能够完全独立地提交/回滚两个事务,例如 Spring REQUIRES_NEW,在 JDBC 中您应该使用两个连接并独立管理它们上的事务。