我有一个主要的DB处理程序方法,它调用其他方法,这些方法也与BD事情一起工作。我是否应该在春季也为子方法添加@Transactional注解?
我把@Transactional注释的主要方法,因为我想回滚一切,如果出现问题。
我的问题是:我是否应该将这个注解也用于子方法,或者它会知道子方法是从事务性方法调用的。
例如,在删除方法发生异常时,我如何才能确保写入的部分也将被rollbacked:当它遇到与@Transactional
注释的方法
@Transactional
public void maintDbTings() {
writing();
deleting();
}
@Transactional //do I need this?
public void writing() {
//no exceptions
}
@Transactional //do I need this?
public void deleting() {
//exception occurs
}
由于这些都是公开的,可以自行调用,我想你做需要注释。只要确保它们不会不必要地创建自己的事务,并且尽可能使用'mainDbThings'事务。 –
但如果他们将是私人的,并只从主要方法调用?如果删除方法有例外情况,写入方法是否会回滚? – victorio
为了澄清,如果方法是从mainDbTings调用的,则不需要该方法,因为如果有的话,mainDbTings已经启动了一个事务。但是,这些方法应该是私人的。如果可以在不通过mainDbTings的情况下调用它们并且应该是事务性的,那么它们也应该被注释。 –