SSH事務配置

2021-08-30 16:31:16 字數 3336 閱讀 8964

1、 準備工作:

可以利用hibernate tools生成相關對映檔案已經po物件、dao物件,dao也可以自己手動編寫,無非就是實現crud,如果通過繼承hibernate提供的 hibernatedaosupport,則可以更輕鬆的實現

<?xml version="1.0" encoding="utf-8"?>

org.hibernate.dialect.mysqldialect

true

true

propagation_required

propagation_required

propagation_required

propagation_required

propagation_required

propagation_required,readonly

propagation_required,readonly

propagation_required,readonly

propagation_required,readonly

propagation_required,readonly

propagation_required,readonly

propagation_required,readonly

可以看到配置檔案的步驟:

1、 配置資料來源

2、 配置會話工廠(依賴注入上面的資料來源,還要注入hbm對映檔案[注意正確的位置]、hibernate屬性檔案)

3、 配置事務管理器(依賴注入上面的會話工廠)

4、 spring中宣告事務管理器(根據需要又可分為幾種,但都要依賴注入上面的事務管理器,此外還需要配置transationattributes)

後面的一些普通的bean配置就不用說了

上面的例子中使用的宣告事務管理器是:transactionproxyfactorybean,這樣的話我們就需要在後面配置目標bean,比如上面的例子中我們的原服務物件是id為 us的userservice(沒有實現介面),所以我們為他配置了id為userservice的**物件(目標bean),程式中使用時只能通過使用**物件才能實現資料庫操作功能(**物件的父類是上面宣告的事務管理器,一邊我們使用的時候開啟事務),如果直接使用服務物件就無法開啟事務

注:userservice 就是上面配置的**物件的id,而不是原服務物件的id

但是如果我們想通過原服務物件的id來使用物件,則我們需要使用**事務管理器beannameautoproxycreator(根據beanname自動**),上面的配置檔案需要做改動,做兩件事(當然先要刪除原來配置的transactionproxyfactorybean,不然就混亂了,可能會報錯的):

1、 增加乙個事務***

propagation_required

propagation_required

propagation_required

propagation_required

propagation_required

propagation_required,readonly

propagation_required,readonly

propagation_required,readonly

propagation_required,readonly

propagation_required,readonly

propagation_required,readonly

propagation_required,readonly

2、 定義自動**事務管理器

ustransactioninterceptor

然後我們在程式中呼叫時應如下:

注:注意與上面使用transactionproxyfactorybean時的呼叫區別,此處我們用getbean時直接取原服務層物件的id,不需要去配置目標bea,這也正是

beannameautoproxycreator(根據bean名稱自動**)的含義所在

附錄:1、關於hibernate的屬性詳解:

hibernate 會話廠 sessionfactory

session 就是用於每次與資料庫會話的,因此需要:

資料庫的配置引數,這些引數就是 上面的資料來源指定的! 因此我們只需引用即可: ref="datasource";

實體對映配置 hibernate.cfg.xml 配置

結果快取配置(這裡使用的是開源的 ehcache)

org/springframework/samples/jpetstore/domain/banner.hbm.xml

org/springframework/samples/jpetstore/domain/category.hbm.xml

org/springframework/samples/jpetstore/domain/inventory.hbm.xml

org/springframework/samples/jpetstore/domain/item.hbm.xml

org/springframework/samples/jpetstore/domain/lineitem.hbm.xml

org/springframework/samples/jpetstore/domain/order.hbm.xml

org/springframework/samples/jpetstore/domain/product.hbm.xml

org/springframework/samples/jpetstore/domain/supplier.hbm.xml

$true

true

true

2100

50update

update

true

org.hibernate.cache.ehcacheprovider

2、spring的transactionattributes

propagation_required:支援當前事務,如果當前沒有事務,就新建乙個事務。這是最常見的選擇。

propagation_supports:支援當前事務,如果當前沒有事務,就以非事務方式執行。

propagation_mandatory:支援當前事務,如果當前沒有事務,就丟擲異常。

propagation_requires_new:新建事務,如果當前存在事務,把當前事務掛起。

propagation_not_supported:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

propagation_never:以非事務方式執行,如果當前存在事務,則丟擲異常。

propagation_nested:如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則進行與propagation_required類似的操作。

SSH中事務配置詳解

前段時間對spring的事務配置做了比較深入的研究,在此之間對spring的事務配置雖說也配置過,但是一直沒有乙個清楚的認識。通過這次的學習發覺spring的事務配置只要把思路理清,還是比較好掌握的。總結如下 spring配置檔案中關於事務配置總是由三個組成部分,分別是datasource tran...

事務及SSH框架相關配置

propagation required事務 採用程式設計式事務 1 getcurrentsession 與opensession 的區別?採用getcurrentsession 建立的session會繫結到當前執行緒中,而採用opensession 建立的session則不會 採用getcurre...

ssh唯讀事務的管理

概念 從這一點設定的時間點開始 時間點a 到這個事務結束的過程中,其他事務所提交的資料,該事務將看不見!查詢中不會出現別人在時間點a之後提交的資料 應用場合 怎樣設定 對於唯讀查詢,可以指定事務型別為readonly,即唯讀事務。由於唯讀事務不存在資料的修改,因此資料庫將會為唯讀事務提供一些優化手段...