在進入什麼是程式設計事務之前,我們先了解一下spring的事務隔離級別和事務傳播行為。
隔離級別是指:若干個併發的事務之間的隔離程度。transactiondefinition 介面中定義了五個表示隔離級別的常量:
事務傳播行為是指:如果在開始當前事務之前,乙個事務上下文已經存在,此時有若干選項可以指定乙個事務性方法的執行行為。在transactiondefinition定義中包括了如下幾個表示傳播行為的常量: 事務超時是指: 乙個事務所允許執行的最長時間,如果超過該時間限制但事務還沒有完成,則自動回滾事務。在 transactiondefinition 中以 int 的值來表示超時時間,其單位是秒。事務唯讀是指: 事務的唯讀屬性是指,對事務性資源進行唯讀操作或者是讀寫操作。所謂事務性資源就是指那些被事務管理的資源,比如資料來源、 jms 資源,以及自定義的事務性資源等等。如果確定只對事務性資源進行唯讀操作,那麼我們可以將事務標誌為唯讀的,以提高事務處理的效能。在 transactiondefinition 中以 boolean 型別來表示該事務是否唯讀。
事務回滾規則是指: 通常情況下,如果在事務中丟擲了未檢查異常(繼承自 runtimeexception 的異常),則預設將回滾事務。如果沒有丟擲任何異常,或者丟擲了已檢查異常,則仍然提交事務。這通常也是大多數開發者希望的處理方式,也是 ejb 中的預設處理方式。但是,我們可以根據需要人為控制事務在丟擲某些未檢查異常時任然提交事務,或者在丟擲某些已檢查異常時回滾事務。
程式設計式事務管理
1. 基於底層api的程式設計式事務管理
2. 基於transactiontemplate的程式設計式事務管理
宣告式事務管理
1. 基於 spring 提供了 transactioninterceptor 類的宣告式事務管理
2. 基於 spring 提供了 transactionproxyfactorybean 類的宣告式事務管理
3. 基於 spring 提供了 命名空間的宣告式事務管理
4. 基於 spring 提供了 annotation方式@transactional的宣告式事務管理
總結
spring 程式設計式事務管理
事務管理很重要,他保證了每一步的操作都是可靠的,即便出現了異常的情況也不會破壞資料庫的完整性。1 在 spring 中,事務是通過 transactiondefinition 介面來定義的。該介面包含與事務屬性有關的方法。具體內容如 下 public inte ce transactiondefin...
Spring程式設計式事務管理案例
import org.springframework.beans.factory.annotation.autowired import org.springframework.transaction.transactionstatus import org.springframework.tran...
1 07 Spring程式設計式事務管理
示例demo 位於dao的實現類當中 配置beans.xml xmlns xsi xsi schemalocation spring beans 3.0.xsd bean 基於xml實現事務管理 spring宣告式事務管理的特點 本質 對方法前後進行攔截 具體過程 優點 分離業務邏輯 和事務管理 位...