gpt4 book ai didi

hibernate - withTransaction 和 withNewTransaction 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 12:10:52 24 4
gpt4 key购买 nike

以下操作有什么区别?

def someAction() {
User.withTransaction { ... }
}


def someAction() {
User.withNewTransaction { ... }
}
  • 我什么时候用什么?
  • 当 grails 操作仅包含一个事务块时。在这种情况下,我猜 withTransaction 和 withNewTransaction 是相同的,因为每个操作都有自己的事务。这是真的?
  • 最佳答案

    我相信这些功能与事务隔离语义有关。 withTransaction如果一个事务已经开始,函数将参与一个现有的事务,否则将开始一个新的事务。 withNewTransaction方法将始终启动一个新事务,无论是否已经启动,将该块内的代码隔离到它自己的事务中(具有自己的提交/回滚)。
    如果您认为您正在开发的方法应该或可以参与一些具有多个单独数据库写入的更大事务,那么您应该使用 withTransaction以便您可以在必要时参与更大的交易。如果您希望在另一个事务正在进行时您的写入与其他数据库写入完全隔离(并且如果此代码失败,则不会回滚该其他事务),然后使用 withNewTransaction .
    关于您的问题二,如果这两个是在操作中进行的唯一调用,则它们的行为将相同,因为它们都将启动一个新事务。

    关于hibernate - withTransaction 和 withNewTransaction 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17994372/

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