java-@Transactional,方法内部的方法

我有一个带有调用另一个方法的方法的服务.在第一种方法中,我仅使用SELECT执行查询,但它们必须查看在第二种方法中完成的INSERTS和UPDATES.

然后,我必须处理交易.我正在使用Spring,因此可以使用@Transactional批注.

以下哪个选项似乎更适合您?

选项A

@Transactional
public void generate(){
    // selects
    save(a);
    // more selects
}

@Transactional
public void save(Object a){
    //save the object
}

选项B

public void generate(){
    // selects
    save(a);
    // more selects
}

@Transactional
public void save(Object a){
    //save the object
}

谢谢!!

解决方法:

理想情况应该是

@Transactional
public void generate(){
    // selects
    save(a);
    // more selects
}

public void save(Object a){
    //save the object
}

即将使用生成方法的事务.如果发生任何异常,您可以全部回滚.如果要覆盖行为.使用传播行为

例如.:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void save(Object a){
    //save the object
}

参考:Transaction propagation

上一篇:java-什么是基于接口的代理?


下一篇:java-@Transactional注释是否避免并发访问业务层方法