1. 程式人生 > >spring 事務管理

spring 事務管理

事務 spring 特性

一、事務的概念
    事務(Transaction),一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新數據庫中各種數據項的一個程序執行單元(unit)。

二、事務的四個特性

    1、原子性(Atomicity):事務是一個原子操作,由一系列動作組成。事務的原子性確保動作要麽全部完成,要麽完全不起作用。

  2、一致性(Consistency):一旦事務完成(不管成功還是失敗),系統必須確保它所建模的業務處於一致的狀態,而不會是部分完成部分失敗。在現實中的數據不應該被破壞。

  3、隔離性(Isolation):可能有許多事務會同時處理相同的數據,因此每個事務都應該與其他事務隔離開來,防止數據損壞。

  4、持久性(Durability):一旦事務完成,無論發生什麽系統錯誤,它的結果都不應該受到影響,這樣就能從任何系統崩潰中恢復過來。通常情況下,事務的結果被寫到持久化存儲器中。

三、事務的狀態

    事務狀態TransactionStatus這個接口有如下方法:
    1、isNewTransaction():boolean 是否是新的事務
    2、hasSavepoint():boolean 是否有保存點
    3、setRollbackOnly():void 設置回滾
    4、flush():void 刷新
    5、isComplete():boolean 是否完成

四、事務的基本屬性

    1、傳播行為:當事務方法被另一個事務房屋調用時,必須制定事務應該如何傳播。
    2、隔離級別:定義了一個事務可能受其他並發事務影響的程度。
    3、只讀:如果事務只對後端數據庫進行該操作,數據庫可以利用事務的只讀特性來進行一些特定的優化,數據庫會應用認為 合適的優化措施。
    4、事務超時:為了使應用程序很好地運行,事務不能運行太長的時間。因為事務可能涉及對後端數據庫的鎖定,所以長時間的事務會不必要的占用數據庫資源。事務超時就是事務的一個定時器,在特定時間內事務如果沒有執行完畢,那麽就會自動回滾,而不是一直等待其結束。
    5、回滾規則:事務五邊形的最後一個方面是一組規則,這些規則定義了哪些異常會導致事務回滾而哪些不會。默認情況下,事務只有遇到運行期異常時才會回滾,而在遇到檢查型異常時不會回滾(這一行為與EJB的回滾行為是一致的) 。但是你可以聲明事務在遇到特定的檢查型異常時像遇到運行期異常那樣回滾。同樣,你還可以聲明事務遇到特定的異常不回滾,即使這些異常是運行期異常。

五、編程式事務和聲明式事務的區別

    1、編程式事務:所謂編程式事務指的是通過編碼方式實現事務,允許用戶在代碼中精確定義事務的邊界。即類似於JDBC編程實現事務管理。編程式事務侵入到了業務代碼裏面,但是提供了更加詳細的事務管理。
    2、聲明式事務:管理建立在AOP實現之上。其本質是對方法前後進行攔截,然後在目標方法開始之前創建或者加入一個事務,在執行完目標方法之後根據執行情況提交或者回滾事務。

spring 事務管理