首先让我解释一下嵌套事务的含义。
示例:在主类中说我们调用method1
并使用jdbc [Transaction1]创建客户。它尚未提交。现在我们在主类中调用method2
并为刚创建的客户[Transaction2]创建帐户。现在提交它。根据您的解释,这些交易将被视为一个交易的一部分(因为最多可以有一个连接的交易)。到此为止,如果我们比较上述情况,它就像Spring中的propagation_required
。这是对的吗?
现在,如果我们想要提交transaction2而不是那个。那么这个场景就像Spring中的propagation_Nested
。这是对的吗?
如果上述两个假设都正确,我们如何在JDBC中实现嵌套事务?
答案 0 :(得分:3)
这不完全是嵌套事务的工作原理。如果回滚事务1,则事务2也会回滚。使用嵌套事务,您可以回滚事务2并仍然提交事务1。
在JDBC中,您可以使用保存点来实现此效果。您可以在创建帐户之前调用Connection.setSavepoint(),如果要回滚该操作但仍然提交客户创建,则可以回滚到该保存点。
如果您希望能够完全独立地提交/回滚两个事务,例如Spring REQUIRES_NEW,那么在JDBC中您应该使用两个连接并独立管理它们上的事务。