春季启动@Transactionnal重叠不良做法?

时间:2016-12-16 16:35:45

标签: java spring-boot spring-transactions

我正在使用Spring启动开发JEE应用程序。 我只想确定将@Transactionnal注释的函数叠加在一起会有什么问题吗?这是一个不好的做法?

在我的例子中,我想保存两个用户之间的关系,如果我调用最后一个函数,它将叠加三个事务。

@Transactional
public PrRelationship save(Relationship r)
{
    Relationship result = this.relationshipRepo.save(r);

    return result;
}

@Transactional
public Relationship save(Relationship r, User relation)
{
    this.userService.save(relation);

    r.setUser(user);
    r.setUserRelation(relation);
    return this.save(r);
}

@Transactional
public Relationship save(Relationship r, User user, User relation) {
    this.userService.save(user);
    return this.save(r, relation);
}

感谢您的建议:)

1 个答案:

答案 0 :(得分:0)

你应该在Spring上对Transaction Propagation and Transaction Management做一些阅读。它将回答这些问题。

要回答您的问题,默认传播为REQUIRED,这意味着从创建事务的方法对事务方法的任何调用都将在同一事务上执行。所以在你的情况下,他们会"叠更" (我不得不看那个词)。