spring事務配置

2021-06-25 23:00:12 字數 1935 閱讀 3362

1、宣告式事務配置

* 配置sessionfactory

* 配置事務管理器

* 事務的傳播特性

* 那些類那些方法使用事務

具體配置如下:

localsessionfactorybean">

classpath:hibernate.cfg.xml//這個classpath是spring為我們提供的專門用來讀取classpath環境下的檔案的

//就可以理解為aspect,因為他由pointcut和advice組成的.

這樣在**中就不用寫管理事務的那些**了:

public void adduser(user user) 

throws exception

2、編寫業務邏輯方法

* 繼承hibernatedaosupport類,使用hibernatetemplate來持久化,hibernatetemplate是

hibernate session的輕量級封裝

* 預設情況下執行期異常才會回滾(包括繼承了runtimeexception子類),普通異常是不會滾的

* 編寫業務邏輯方法時,最好將異常一直向上丟擲,在表示層(struts)處理

* 關於事務邊界的設定,通常設定到業務層,不要新增到dao上  

3、了解事務的幾種傳播特性

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

比如說:在usermanager中adduser裡開啟了,那麼在addlog時則他會去看有沒有,有就用,所以可以保證在同乙個事務嘛.

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

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

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

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

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

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

4、spring事務的隔離級別:

級別超高效率越低

1.isolation_default: 這是乙個platfromtransactionmanager預設的隔離級別,使用資料庫預設的事務隔離級別. 另外四個與jdbc的隔離級別相對應

2.isolation_read_uncommitted: 這是事務最低的隔離級別,它充許令外乙個事務可以看到這個事務未提交的資料。 這種隔離級別會產生髒讀,不可重複讀和幻像讀。

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

4.isolation_repeatable_read: 這種事務隔離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。它除了保證乙個事務不能讀取另乙個事務未提交的資料外,還保證了避免下面的情況產生(不可重複讀)。

5.isolation_serializable 這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。除了防止髒讀,不可重複讀外,還避免了幻像讀。

spring中對hibernate的支援的幾個重要api:

hibernatedaosupport實現了乙個輔助的dao,他拿出來的session也是放到threadlocal裡面的.

gethibernatetemplate()這個方法也可以.

hibernatedaosupport裡面有個setsessionfactory()方法的.

spring 事務配置

自己寫的乙個關於事務的配置例子,很簡單 主要是spring的事務可以借助於aop直接環繞在target屬性所對應操作的周圍。無須為事務寫多餘的 即輕便又減少了耦合。配置檔案部分 bean.xml 由於是簡單的例子所以就不寫那麼規範了 class部分 package com.f9inux.test i...

配置spring 事務

三 在編寫買書方法 事務的傳播行為 乙個事務方法被另乙個事務方法呼叫,被呼叫的事務方法如何工作在事務中 使用propagation 指定事務的傳播行為,即當前的事務被另乙個事務方法呼叫時 transactional propagation propagation.required override ...

spring事務配置

這個required,就是spring事務型別,除了這種,還有其他好幾種,都列羅在下 required 支援當前事務,如果當前沒有事務,就新建乙個事務。這是最常見的選擇。supports 支援當前事務,如果當前沒有事務,就以非事務方式執行。mandatory 支援當前事務,如果當前沒有事務,就丟擲異...