@Transactional(rollbackFor = Exception.class) 和 @Transactional(propagation=Propagation.REQUIRED) 有什么区别 [英] What is difference between @Transactional(rollbackFor = Exception.class) and @Transactional(propagation=Propagation.REQUIRED)

查看:127
本文介绍了@Transactional(rollbackFor = Exception.class) 和 @Transactional(propagation=Propagation.REQUIRED) 有什么区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

@Transactional(rollbackFor = Exception.class) 
public void foo1() {
    `/**Some Code**/`
}

@Transactional(propagation=Propagation.REQUIRED)
public void foo2() {
    `/**Some Code**/`
}

推荐答案

@Transactional(propagation=Propagation.REQUIRED)@Transactional(rollbackFor = Exception.class)大致相同.由于 propagation=Propagation.REQUIRED默认.因此,考虑到这一点,它们等效于 @Transactional(propagation=Propagation.REQUIRED)@Transactional(propagation=Propagation.REQUIRED, rollbackFor = Exception.class).

@Transactional(propagation=Propagation.REQUIRED) and @Transactional(rollbackFor = Exception.class) are roughly the same. As propagation=Propagation.REQUIRED is the default. So with that in mind they are equivalent to @Transactional(propagation=Propagation.REQUIRED) and @Transactional(propagation=Propagation.REQUIRED, rollbackFor = Exception.class).

唯一的区别是如果没有 rollbackFor = Exception.class 它只会回滚 RuntimeExceptions 和 Error s 而不是其他异常发生.(使用 EJB 时 JEE 也是如此,并且行为也已转换为 Spring).

The only difference is that without the rollbackFor = Exception.class it will rollback only for RuntimeExceptions and Error s not for other exceptions that occur. (This is the same for JEE when using EJB and the behavior has been translated to Spring as well).

这也在@Transactional 的 javadoc.

This is also explained in the javadoc of @Transactional.

这篇关于@Transactional(rollbackFor = Exception.class) 和 @Transactional(propagation=Propagation.REQUIRED) 有什么区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆