技術分析之spring框架的事務管理相關的類和api
1. platformtransactionmanager介面 -- 平台事務管理器.(真正管理事務的類)。該介面有具體的實現類,根據不同的持久層框架,需要選擇不同的實現類!
2. transactiondefinition介面 -- 事務定義資訊.(事務的隔離級別,傳播行為,超時,唯讀)
3. transactionstatus介面 -- 事務的狀態
4. 總結:上述物件之間的關係:平台事務管理器真正管理事務物件.根據事務定義的資訊transactiondefinition 進行事務管理,在管理事務中產生一些狀態.將狀態記錄到transactionstatus中
5. platformtransactionmanager介面中實現類和常用的方法
1. 介面的實現類
* 如果使用的spring的jdbc模板或者mybatis框架,需要選擇datasourcetransactionmanager實現類
* 如果使用的是hibernate的框架,需要選擇hibernatetransactionmanager實現類
2. 該介面的常用方法
* void commit(transactionstatus status)
* transactionstatus gettransaction(transactiondefinition definition)
* void rollback(transactionstatus status)
6. transactiondefinition
1. 事務隔離級別的常量
* static int isolation_default -- 採用資料庫的預設隔離級別
* static int isolation_read_uncommitted
* static int isolation_read_committed
* static int isolation_repeatable_read
* static int isolation_serializable
2. 事務的傳播行為常量(不用設定,使用預設值)
* 先解釋什麼是事務的傳播行為:解決的是業務層之間的方法呼叫!!
* propagation_required(預設值) -- a中有事務,使用a中的事務.如果沒有,b就會開啟乙個新的事務,將a包含進來.(保證a,b在同乙個事務中),預設值!!
* propagation_supports -- a中有事務,使用a中的事務.如果a中沒有事務.那麼b也不使用事務.
* propagation_mandatory -- a中有事務,使用a中的事務.如果a沒有事務.丟擲異常.
* propagation_requires_new(記)-- a中有事務,將a中的事務掛起.b建立乙個新的事務.(保證a,b沒有在乙個事務中)
* propagation_not_supported -- a中有事務,將a中的事務掛起.
* propagation_never -- a中有事務,丟擲異常.
* propagation_nested(記) -- 巢狀事務.當a執行之後,就會在這個位置設定乙個儲存點.如果b沒有問題.執行通過.如果b出現異常,執行客戶根據需求回滾(選擇回滾到儲存點或者是最初始狀態)
技術分析之spring框架的事務管理的分類
1. spring的事務管理的分類
1. spring的程式設計式事務管理(不推薦使用)
* 通過手動編寫**的方式完成事務的管理(不推薦)
2. spring的宣告式事務管理(底層採用aop的技術)
* 通過一段配置的方式完成事務的管理(重點掌握註解的方式)
技術分析之spring框架的事務管理之程式設計式的事務管理(了解)
1. 說明:spring為了簡化事務管理的**:提供了模板類 transactiontemplate,所以手動程式設計的方式來管理事務,只需要使用該模板類即可!!
2. 手動程式設計方式的具體步驟如下:
1. 步驟一:配置乙個事務管理器,spring使用platformtransactionmanager介面來管理事務,所以咱們需要使用到他的實現類!!
2. 步驟二:配置事務管理的模板
3. 步驟三:在需要進行事務管理的類中,注入事務管理的模板.
4. 步驟四:在業務層使用模板管理事務:
// 注入事務模板物件
private transactiontemplate transactiontemplate;
public void settransactiontemplate(transactiontemplate transactiontemplate)
public void pay(final string out, final string in, final double money)
});}
spring框架的事務管理之基於aspectj的xml方式(重點掌握)
1. 配置事務管理器
2. 配置事務增強(增強規則)
3. 配置aop的切面(即哪些方法增強):切入點和通知結合
* 注意:如果是自己編寫的切面,使用標籤,如果是系統製作的,使用標籤。
4. 編寫測試類
@runwith(springjunit4classrunner.class)
public class demo2
}
spring框架的事務管理之基於aspectj的註解方式(重點掌握,最簡單的方式)
1. 配置事務管理器
2. 開啟註解事務
3. 在業務層上新增乙個註解:@transactional,類或者方法上加都可以
4. 編寫測試類
@runwith(springjunit4classrunner.class)
public class demo3
}
@transactional
public class accountserviceimpl implements accountservice
手動回滾事務
如果在註解事物中需要回滾事物怎麼辦?
transactionaspectsupport.currenttransactionstatus().setrollbackonly();
Python學習筆記015
015 格式化replacement欄位 由 括號括起來 format 方法 接受位置引數和關鍵字引數 love format i you too 輸出 i love you too love format a i b you c too 輸出 i love you too 位置引數和關鍵字引數可以...
Day015 學習筆記
建立socket 該函式帶有兩個引數 引數必須寫 a.af inet ipv4協議 於 internet 程序間通訊 b.套接字型別,可以是 sock stream 流式套接字,於tcp 協議 或者 sock dgram 資料報套接字,於 udp 協議 tcp慢但是穩定不會丟資料 udp快但是可能會...
Java Web學習筆記 一
1.html hyper text markup language 超文字標記語言。html的檔案字尾名一般是 htm 或者.html 2.css定義的語法 selecter 1 http是乙個基於請求 響應模式的,無狀態的協議 request response based,stateless pr...