(事務管理很重要,他保證了每一步的操作都是可靠的,即便出現了異常的情況也不會破壞資料庫的完整性。)
1: 在 spring 中,事務是通過 transactiondefinition 介面來定義的。該介面包含與事務屬性有關的方法。具體內容如 下:
public inte***ce transactiondefinition
2:事務的四個基本屬性
3:事務的隔離級別
1:transactiondefinition.isolation_default:這是預設值,表示使用底層資料庫的預設隔離級別。對大部分資料庫而言,通常這值就是transactiondefinition.isolation_read_committed。
2:transactiondefinition.isolation_read_uncommitted:該隔離級別表示乙個事務可以讀取另乙個事務修改但還沒有提交的資料。該級別不能防止髒讀和不可重複讀,因此很少使用該隔離級別。
3:transactiondefinition.isolation_read_committed:該隔離級別表示乙個事務只能讀取另乙個事務已經提交的資料。該級別可以防止髒讀,這也是大多數情況下的推薦值。
4:transactiondefinition.isolation_repeatable_read:該隔離級別表示乙個事務在整個過程中可以多次重複執行某個查詢,並且每次返回的記錄都相同。即使在多次查詢之間有新增的資料滿足該查詢,這些新增的記錄也會被忽略。該級別可以防止髒讀和不可重複讀。
5:transactiondefinition.isolation_serializable:所有的事務依次逐個執行,這樣事務之間就完全不可能產生干擾,也就是說,該級別可以防止髒讀、不可重複讀以及幻讀。但是這將嚴重影響程式的效能。通常情況下也不會用到該級別。
4:事務的傳播行為
1:transactiondefinition.propagation_required:如果當前存在事務,則加入該事務;如果當前沒有事務,則建立乙個新的事務。
2:transactiondefinition.propagation_requires_new:建立乙個新的事務,如果當前存在事務,則把當前事務掛起。
3:transactiondefinition.propagation_supports:如果當前存在事務,則加入該事務;如果當前沒有事務,則以非事務的方式繼續執行。
4:transactiondefinition.propagation_not_supported:以非事務方式執行,如果當前存在事務,則把當前事務掛起。
5:transactiondefinition.propagation_never:以非事務方式執行,如果當前存在事務,則丟擲異常。
6:transactiondefinition.propagation_mandatory:如果當前存在事務,則加入該事務;如果當前沒有事務,則丟擲異常。
7:transactiondefinition.propagation_nested:如果當前存在事務,則建立乙個事務作為當前事務的巢狀事務來執行;如果當前沒有事務,則該取值等價於transactiondefinition.propagation_required。
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宣告式事務管理的特點 本質 對方法前後進行攔截 具體過程 優點 分離業務邏輯 和事務管理 位...
spring事務管理(宣告式事務和程式設計式事務)
spring的事務管理分為 宣告式事務和程式設計式事務 spring對事務管理通常分為三部分 datasource transactionmanager和 機制這三部分,無論哪種配置方式,一般變化的只是 機制這部分。hibernate.dialect org.hibernate.dialect.my...