gpt4 book ai didi

java - 将数据库更改单独提交到主事务

转载 作者:行者123 更新时间:2023-12-02 08:28:04 26 4
gpt4 key购买 nike

假设我有以下代码:

public void doSomething() {
// begin transaction

// do stuff 1
...

// update a row which must be committed now
...

// do stuff 2
...

// commit transaction
}

我将数据库上的大量工作保留在一种方法中以简化伪代码。然而,基本上我有一系列的数据库工作,直到最后我都不想提交。在上面的事务中间,我需要将某些内容提交到一行而不提交事务的其余部分。我如何在不影响事务其余部分的情况下提交这一小部分工作?

最佳答案

通常,您只需获取另一个连接并在另一个数据库连接上执行工作即可完成此操作。您可能需要也可能不需要管理数据库隔离级别以获得所需的可见性。这就是 Propagation.REQUIRES_NEW 在 Spring 中的工作原理。 (编辑:有人注意到您标记了 Hibernate 问题。本质上,您创建了一个全新的 session /实体管理器,并对该 session /实体管理器进行单独的工作。这对于跨边界的对象状态可能会产生一些意外的结果。如果您从一个 session /实体管理器加载某些内容 session 并尝试继续使用它越过边界进入另一个 session ,这很可能会在你身上爆炸。你需要小心地正确管理它并跟踪哪个 session 管理的内容。)

关于java - 将数据库更改单独提交到主事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4048285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com