问题描述
@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
它只会回滚 RuntimeException
s 和 Error
s 而不是其他异常发生.(使用 EJB 时 JEE 也是如此,并且行为也已转换为 Spring).
The only difference is that without the rollbackFor = Exception.class
it will rollback only for RuntimeException
s 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) 有什么区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!