首頁  >  文章  >  Java  >  理解Spring Boot中的@Transactional

理解Spring Boot中的@Transactional

WBOY
WBOY原創
2024-07-16 09:55:56967瀏覽

Understanding @Transactional in Spring Boot

可以使用 @Transactional 註解來管理 Spring Boot 中的事務。在這篇文章中,我們將探討如何使用 @Transactional 來確保資料一致性並簡化 Spring Boot 應用程式中的錯誤處理。

1. 基本使用

要使用@Transactional,通常會將其放置在您想要事務行為的服務類別的方法上。

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService{

    @Transactional
    public void createUser() {
        // enter your transactional code here
    }
}

2. 傳播和隔離級別

您可以指定交易的傳播和隔離等級來控制事務的行為方式:

  • 傳播:定義現有事務已在執行時事務的行為方式。

  • 隔離性:定義交易的資料可見性等級。

@Transactional(propagation = Propagation.REQUIRED, 
              isolation = Isolation.READ_COMMITTED)
public void createUser() {
    // enter your transactional code here
}

3.回滾規則

您可以指定哪些異常應觸發回滾:

@Transactional(rollbackFor = Exception.class)
public void createUser() {
    // your transactional code here
}

4. 只讀事務

如果你的方法只讀取數據,不執行任何寫入操作,可以將其標記為唯讀以優化效能:

@Transactional(readOnly = true)
public void getUser() {
    // your read-only code here
}

5. 類別的事務性

您也可以將 @Transactional 放置在類別級別,將其套用至類別中的所有方法:

@Service
@Transactional
public class UserService {

    public void getUser() {
        // transactional code
    }

    public void createUser() {
        // transactional code
    }
}

具有事務方法的範例服務

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService {

    @Transactional
    public void saveUser() {
        // code to save data
    }

    @Transactional(readOnly = true)
    public void fetchUser() {
        // code to fetch data
    }

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void newTransaction() {
        // code to execute in a new transaction
    }

    @Transactional(rollbackFor = {CustomException.class})
    public void performWithRollback() {
        // risky code that may throw CustomException
    }
}

概括

使用 @Transactional Spring Boot 讓您以聲明方式管理事務,準確指定您希望事務在各種場景中的行為方式。這有助於確保資料一致性並簡化應用程式中的錯誤處理。

參考

https://www.baeldung.com/spring-transactions-read-only

https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html

Github: https://github.com/tharindu1998/transactional-blog

以上是理解Spring Boot中的@Transactional的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn