Transaction
交易 Transaction 是資料庫中的一種用法
用途: 可以在一個交易裡包含多個資料庫操作 ,這些資料庫操作 要馬一起成功 要馬一起失敗
- All or Nothing 原則
Rollback 撤銷已執行的資料庫操作 ,確保數據恢復原狀
ex: A想要轉帳 1000元給B
- 從 A帳戶中扣除1000元
- 在 B帳戶中新增1000元
但假設情況是 A扣除1000元後 銀行突然停電了導致B帳戶沒有新增1000元的動作
這時候就需要加上交易來管理轉帳流程 ,只能一起成功 ,或是一起失敗
中途發生失敗時 ,rollback (回滾) 所有已執行的資料庫操作 ,將數據恢復原狀
就不會有進行到一半失敗的情況出現
@Transactional
用法: 加上 class 上或方法上 (通常是加在方法上)
用途: 使用交易來管理這個方法中的資料庫操作
交易的英文誰 Transaction ,加上al 變成形容詞 ,形容這是一個具有交易特性的方法
意義不同的 @Transactional
- @Transactional 在 main (正常程式)
- 交易管理
- 程式運行中途發生錯誤的話 , 才 rollback 已經執行的資料庫操作 , 將數據恢復原狀
- @Transactional 在 test (單元測試)
- 在該單元測試結束後 , 強制 rollback 所有執行的資料庫操作 ,將數據恢復原狀