Spring @Transactional注释问题

时间:2014-02-24 23:36:27

标签: java spring hibernate

我有两个方法都是@Transactional,并且都执行一些数据库操作,主要是插入。

我从methodA

调用methodB
@Transactional
public void methodA(){
methodB();

// Some database Operations

// some error conditions....
throw exception;
}

@Transactional
public void methodB(){
// Some database Operations
}

所以我想只在所有操作都成功的情况下提交MethodA和MethodB的数据库事务。 因此,即使在methodA中遇到异常,仍然会提交方法B中所做的更改。

如果在methodA中遇到错误,我希望更改MethodB。

我是否需要做其他事情。

2 个答案:

答案 0 :(得分:2)

methodA()内调用的所有方法都是事务性的,@Transactional annotation has a propagation of required by default。因此methodB()中的@Transactional并非完全必需。

答案 1 :(得分:1)

当从methodA调用methodB时,它不会创建新事务,因为您没有调用弹出代理来排序所有事务创建和回滚,因此来自methodA和methodB的插入将在同一事务中执行。

所以不,你不需要做任何其他事情......