spring學習筆記 十六 宣告式事務的例子

2021-08-29 22:00:32 字數 1592 閱讀 7916

事務的傳播特性

1.宣告式異常的配置

配置sessionfactory

配置事務管理器

配置事務的傳播特性

配置哪些類哪些方法使用事務

2.編寫業務邏輯方法

繼承hibernatedaosupport類,使用hibernatetemplate這個類持久化資料,hibernatetemplate是session的輕

量級封裝

預設的事務回滾是runtimeexception(包括所有實現該類的子類),普通異常不回滾

在編寫業務邏輯方法時候,最好將異常一直往上丟擲,由呈現層(struts)處理

spring的事務管理需要新增到業務邏輯物件上(事務邊界定義到facade類上)不要新增到dao上

3.事務的傳播特性(1-6屬於標準的,在ejb中也有)

1.propagation_requred: 如果存在乙個事務,則支援當前事務.如果沒有事務則開啟

所有地方都用這個乙個事務.(比如說存user 開啟了乙個事務)

2.propagation_supports: 如果存在乙個事務,則支援當前事務.如果沒有事務則非事務的執行

3.propagation_mandatory: 如果存在乙個事務,則支援當前事務.如果沒有乙個活動的事務則丟擲異常

4.propagation_requires_new: 總是開啟乙個新的事務.如果乙個事務已經存在,則將這個存在的事務掛起.

5.propagation_not_supports: 總是非事務的執行,並掛起任何存在的事務.

6.propagation_never: 總是非事務的執行,如果存在乙個活動事務,則丟擲異常.

7.propagation_nested: 如果乙個活動的事務存在,則執行在乙個巢狀的事務中,如果沒有活動的事務,則

按照transactiondefinition.propagation_required 屬性執行

4.spring事務的隔離級別 (第乙個是srping的其它的是標準的第三個用的較多)

1.isolation_default :這是乙個platformtransactionmanager預設的隔離級別,使用資料庫預設的事務隔離

級別,另外四個與jdbc的隔離級別相對應

2.isolation_read_uncommitted : 這是事務最低的隔離級別,它允許另外的乙個事務可以看到這個事務未提

交的資料.

這種隔離級別會產生髒資料,不可重複讀和幻想讀.

3.isolation_read_committed : 保證乙個事務修改的資料提交後才能被另乙個事務讀取.另乙個事務不能讀

取該事務未提交的資料

4.isolation_repeatable_read :這種事務隔離級別可以防止髒讀,不可重複讀,但是可能出現幻象讀.

它除了包能乙個事務不能讀取另乙個事務未提交的資料外,還保證了避免下面的情況產生.

5.isolation_serializable :這是花費最高代價但是最可靠的事務隔離級別.事務被處理為順序執行,除了防

止髒讀,不可重複讀外,還避免了幻象讀.

結構:

Spring註解(六) 宣告式事務

導包 資料來源 資料庫驅動 springjdbc模組 spring jdbc 配置資料來源 jdbctemplate sping提供的簡化資料庫操作 運算元據 在容器中註冊事務管理器 bean public jdbctemplate jdbctemplate throws execption 在方法...

spring學習(十三 宣告式事務)

事務的acid原則 永續性在 中測試事務的一致性,selectuser就作為乙個事務 public listselectuser public int adduser user user public int deleteuser int id 在這裡將delete的sql操作寫錯,來測試事務的一致...

spring學習筆記(21) 宣告式事務

假設現在要實現乙個轉賬的功能,a轉賬給b,當a扣了100塊錢之後,突然發生了什麼導致程式無法正常執行,這時候,b沒有收到錢。那麼,這100塊錢就不翼而飛了。這時候就需要事務,a扣錢和b收到錢這兩件事要麼都成功,要麼都不成功。使用者支出 param username 使用者名稱 param out 支...