JavaWeb筆記015 Spring中的事務

2021-09-12 18:42:36 字數 3328 閱讀 6542

技術分析之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...