首先让我解释一下嵌套事务的含义。
示例:假设在主类中我们method1使用 jdbc[Transaction1] 调用并创建客户。目前尚未承诺。现在我们调用method2主类并为刚刚创建的客户[Transaction2]创建帐户。现在提交吧。根据您的解释,这些事务将被视为一项事务的一部分(因为最多可以有一项具有连接的事务)。到这里,如果我们比较上面的场景,就会像propagation_required在Spring中一样。那是对的吗?
现在,如果我们只想提交事务 2 而不是事务 1。那么这个场景就会像propagation_NestedSpring中一样。那是对的吗?
如果我上面的两个假设都是正确的,那么我们如何在 JDBC 中实现嵌套事务呢?
这并不完全是嵌套事务的工作方式。如果回滚事务 1,事务 2 也会回滚。使用嵌套事务,您可以回滚事务 2,但仍提交事务 1。
在 JDBC 中,您可以使用保存点来实现此效果。您可以在创建帐户之前调用 Connection.setSavepoint(),如果您想回滚该操作但仍提交客户的创建,则可以回滚到该保存点。
如果您希望能够完全独立地提交/回滚两个事务,例如 Spring REQUIRES_NEW,在 JDBC 中您应该使用两个连接并独立管理它们上的事务。
| 归档时间: |
|
| 查看次数: |
11829 次 |
| 最近记录: |