跳转至

Transaction

交易 Transaction 是資料庫中的一種用法

用途: 可以在一個交易裡包含多個資料庫操作 ,這些資料庫操作 要馬一起成功 要馬一起失敗

  • All or Nothing 原則

Rollback 撤銷已執行的資料庫操作 ,確保數據恢復原狀

ex: A想要轉帳 1000元給B

  1. 從 A帳戶中扣除1000元
  2. 在 B帳戶中新增1000元

但假設情況是 A扣除1000元後 銀行突然停電了導致B帳戶沒有新增1000元的動作

這時候就需要加上交易來管理轉帳流程 ,只能一起成功 ,或是一起失敗

中途發生失敗時 ,rollback (回滾) 所有已執行的資料庫操作 ,將數據恢復原狀

就不會有進行到一半失敗的情況出現

@Transactional

用法: 加上 class 上或方法上 (通常是加在方法上)

用途: 使用交易來管理這個方法中的資料庫操作

交易的英文誰 Transaction ,加上al 變成形容詞 ,形容這是一個具有交易特性的方法

意義不同的 @Transactional

  • @Transactional 在 main (正常程式)
    • 交易管理
    • 程式運行中途發生錯誤的話 , 才 rollback 已經執行的資料庫操作 , 將數據恢復原狀
  • @Transactional 在 test (單元測試)
    • 在該單元測試結束後 , 強制 rollback 所有執行的資料庫操作 ,將數據恢復原狀