Spring宣告式事務管理

2021-08-29 19:28:53 字數 1767 閱讀 1545

classpath:hibernate.cfg.xml

public class usermanagerimpl extends hibernatedaosupport implements usermanager

public void adduser(user user)

throws exception

public void setlogmanager(logmanager logmanager)

}

[color=red]1、宣告式事務配置

* 配置sessionfactory

* 配置事務管理器

* 事務的傳播特性

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

2、編寫業務邏輯方法

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

hibernate session的輕量級封裝

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

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

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

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

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

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 這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。

除了防止髒讀,不可重複讀外,還避免了幻像讀。 [/color]

Spring宣告式事務管理

使用事務的目的是將整個業務的邏輯處理置於同乙個事務中,方便對整個業務進行管理,如業務的事務回滾 在編寫 時,為了將乙個業務的核心邏輯處理放入事務中,有時會這樣寫 session session sf.opensession 開啟乙個session session.gettransaction beg...

Spring宣告式事務管理

spring的宣告式事務管理,可以說是開發人員的福音,也是架構師們的法寶 通過這個神器我們可以有效的解決事務不一致 連線洩露等問題 下面我們就介紹一下spring宣告式事務的配置 1 建立事務管理器 2 制定事務管理 3 建立切面 備註 事務管理機制說明propagation 屬性值 require...

spring 宣告式事務管理

在spring中經常用transactionproxyfactorybean完成宣告式事務管理 使用transactionproxyfactorybean 需要注入它所依賴的事務管理器,設定 的目標物件,物件的生成方式和事務屬性.物件時再目標物件上生成的包含事務和aop切面的新物件,它可以賦給目標的...