【问题标题】:Nested @Transactional嵌套@Transactional
【发布时间】:2011-10-01 19:25:45
【问题描述】:

是否可以在 spring 中嵌套 @Transactional 注解的方法?考虑这样的事情:

@Transactional
public void a() {
    obj.b();
}

@Transactional
public void b() {
    // ... 
}

如果我在 b() 中回滚并在 a() 中回滚,在这种情况下会发生什么?

【问题讨论】:

    标签: hibernate spring jakarta-ee transactions transactional


    【解决方案1】:

    方法b() 上的第二个@Transactional 注释不是必需的,因为默认情况下@Transactional 具有REQUIRED 的传播,因此方法调用的方法a() 将是事务性的。如果您希望在方法a() 调用的方法中启动新事务,则需要修改传播规则。阅读Transaction Propagation

    【讨论】:

    • 由于b 是公开的,如果其他调用者独立于a 使用它怎么办?那么最佳做法是什么?
    • 我认为如果它是公开的,那么它必须有@Transactional 注释。就我而言,我不得不更改为私人可见性。
    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 2015-04-16
    • 2020-09-29
    • 1970-01-01
    • 2014-10-09
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多