两个daoimpl类的@Transactional(rollbackfor = Exception.class)

时间:2011-12-04 17:41:19

标签: java hibernate spring

在我的项目中我使用两个事务类。每个类都包含save方法。当我将@Transactional(roolbackFor=Exception.class)注释添加到这些类中时,使用类似

@Component
public class CallerClass{
@Autowired    
private TransactionClass1 class1;
@Autowired    
private TransactionClass2 class2;

public void saveOperation(){    
    try{
        class1.save();
        class2.save();
    }catch(Exception ex){
    }
}
}

如果在没有Exception的情况下执行class1.save方法但是class2.save方法抛出异常,则回滚class1.save操作?

2 个答案:

答案 0 :(得分:2)

没有

要发生此行为,包含这两个调用的方法也必须是事务性的。此外,如果使用new实例化类,则不会使用事务拦截器。您必须通过依赖注入从应用程序上获取这些类的实例,或者(最好)。

答案 1 :(得分:1)

如果没有方法的@Transactional注释,那么包含save()的调用,如果不存在异常,如果不应该回滚class2.save(),class1.save()。