iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
Mobile Development

用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統系列 第 15

Day15 Spring Data處理資料庫事務:確保資料的完整性

  • 分享至 

  • xImage
  •  

在現代應用程式中,資料庫的一致性和完整性至關重要。尤其是在多用戶環境中,事務管理能夠防止資料的損壞和不一致性。Spring Data 提供了一個強大的事務管理功能,能夠幫助開發者有效地管理資料庫事務。

什麼是資料庫事務?

資料庫事務是一組操作的集合,這些操作要麼全部執行,要麼全部不執行。這是一個保證資料一致性的關鍵概念。常見的事務特性可用 ACID 原則來描述:

  • 原子性 (Atomicity):事務中的所有操作要麼全部執行,要麼全部不執行。
  • 一致性 (Consistency):事務必須使資料庫從一個一致狀態轉換到另一個一致狀態。
  • 隔離性 (Isolation):同時執行的事務互不影響。
  • 持久性 (Durability):一旦事務完成,變更將永久保存在資料庫中,即便系統崩潰也不會失去。

首先,確保你在 Maven 或 Gradle 中添加了 Spring Data 以及事務管理的相關依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

在 application.properties 或 application.yml 中配置你的資料源連接

spring.datasource.url=jdbc:mysql://localhost:3306/yourdb
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

在 Spring 中,可以使用 @Transactional 註解來標記需要處理事務的方法。當這個方法被調用時,它將啟動一個事務,並在完成後自動提交

@Service
public class UserService {

    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @Transactional
    public void createUser(User user) {
        // 執行用戶創建操作
        userRepository.save(user);
        
        // 其他資料操作
        // 若此處發生例外,所有操作將回滾
    }
}

在某些情況下,你可能需要在不同的方法之間明確控制事務邊界。可以在服務層中設置不同的事務層級

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void addNewUser(User user) {
    userRepository.save(user);
}

在這個範例中,addNewUser 方法將在一個新的事務中執行。即使在外部事務中發生錯誤,這個新事務也會被提交

Spring Data 支持多種事務隔離級別,這能幫助你選擇不同的並發控制策略

@Transactional(isolation = Isolation.SERIALIZABLE)
public void updateUser(User user) {
    userRepository.save(user);
}

在這個例子中,事務被設置為最高的隔離級別,這意味著其他事務在這個事務執行期間將無法訪問該資料

透過 Spring Data 的事務管理功能,你可以簡單地確保資料的一致性和完整性。藉由正確的使用 @Transactional 註解,合理配置事務的邊界和隔離級別,你的應用程式將能夠穩定運行,確保使用者的數據得到保護。掌握事務的所有特性,將能提升你在資料庫操作時的安全性和可靠性


上一篇
Day14 使用Spring Data MongoDB進行非關係型資料操作
下一篇
Day16 Spring Data實作推薦算法的資料模型:設計結構以支持個人化推薦
系列文
用Spring Boot架設後端結合Android前端建構智慧個人化推薦系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言