簡體   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