春季交易:从带有require的方法中调用带有require_new的方法

拉玛

我想了解在嵌套事务对调用方法和被调用方法具有不同隔离级别的情况下,何时发生确切的提交以及何时发生确切的回滚,

例如,我有两个spring服务,并且我从service1的method1调用service2的method2。

方法1具有必需的事务范围,方法2具有REQUIRES_NEW事务范围,如下面的程序所示。

Service1 {

 @Transactional(propagation = Propagation.REQUIRED)
method1()
{
    for(int i=0; i<10; i++){
        service2.method2();
    }

    // Some more code which takes some time to process
}

}


Service2 {
 @Transactional(propagation = Propagation.REQUIRES_NEW)
 method2()
 {
    //Save some information to DB
    // Save an object using JPA
 }
}

现在我的问题是,据我了解,REQUIRES_NEW将启动一个新事务,但是它将在现有的method2上立即提交,还是会在方法1完成之前由弹簧等待然后提交?

我对何时发生提交和DB中的行锁被释放(在method2中保持不变)感兴趣。

注意:在这里,我将这两种方法都放在了不同的服务中,以便spring可以实现嵌套事务。

提前致谢,

选择

阿米拉(Amila)闻到戒指

当您输入service2的方法2时,service1的事务(例如tx1)将被挂起,并为service2(例如tx2创建一个新的事务此新事务独立于先前的事务,并且将独立地提交或回滚。

仅当您从service2返回时,tx2才会提交/回退,而在那之后tx1将从暂停点恢复。tx2的结果(无论是导致提交还是回滚)都不会影响tx1的行为。

请阅读Spring文档有关交易传播的更多信息,请参见16.5.7节。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails中的TX不应有任何原因require_new:true

来自分类Dev

角指令中带有“ ^^”的“ Require”

来自分类Dev

Angular指令中带有require的bindToController

来自分类Dev

带有异常捕获的春季交易

来自分类Dev

调用带有参数的方法

来自分类Dev

带有Electron的Angular 2 App中的节点require()

来自分类Dev

Coffeescript require模块带有参数,browserify

来自分类Dev

jQuery-在.on()方法中带有参数的调用函数

来自分类Dev

从Sprite Kit中的Update函数调用带有动画的方法

来自分类Dev

使用SKAction调用对象中带有消息的方法

来自分类Dev

在Python中调用带有正确参数的方法列表

来自分类Dev

erb文件Rails中带有参数的调用方法

来自分类Dev

Java 8 中带有可选参数的调用方法

来自分类Dev

带有super的Python递归方法调用

来自分类Dev

AngularJS指令,带有从外部调用的方法

来自分类Dev

如何调用带有参数的方法?

来自分类Dev

带有groovy的Spring AOP:调用方法

来自分类Dev

带有同步方法调用的异步任务

来自分类Dev

调用带有动态引用的方法

来自分类Dev

带有隐式参数的调用方法

来自分类Dev

从参数调用方法(带有任何参数)

来自分类Dev

带有参数的JSTL方法调用

来自分类Dev

实体管理,带有继承方法调用

来自分类Dev

如何调用带有参数的方法?

来自分类Dev

用C#调用带有参数的方法的最短方法

来自分类Dev

从带有引用参数的方法调用 await 方法?

来自分类Dev

Scala中没有括号的方法调用(带有隐式参数)

来自分类Dev

Java中带有上调调用的“覆盖”私有方法

来自分类Dev

Scala中没有括号的方法调用(带有隐式参数)

Related 相关文章

热门标签

归档