繁体   English   中英

Spring @事务注释问题

[英]Spring @Transactional anotation questions

我有两个方法都标注为@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中遇到异常,在methodB中所做的更改仍将提交。

如果要在methodA中遇到错误,我想将MethodB的更改回滚。

我需要做其他事情吗?

methodA()调用的所有方法都是事务性的,因为@Transactional批注默认情况下具有required的传播 因此,并不完全需要methodB()中的@Transactional。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM