Spring事物介紹

2021-10-06 13:30:31 字數 1647 閱讀 8108

jdbc**:

conn.setautocommite(false); // 設定手動控制事務

hibernate**:

session.begintransaction(); // 開啟乙個事務

spring宣告式事務管理器類:

jdbc技術:datasourcetransactionmanager

hibernate技術:hibernatetransactionmanager

實現方式: xml實現方式、註解方式實現

事務傳播行為就是多個事務方法呼叫時,如何定義方法間事務的傳播。spring定義了7中傳播行為:

(1)propagation_requierd:如果當前沒有事務,就新建乙個事務,如果已存在乙個事務中,加入到這個事務中,這是spring預設的選擇。

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

(3)propagation_mandatory:使用當前事務,如果沒有當前事務,就丟擲異常。

(4)propagation_required_new:新建事務,如果當前存在事務,把當前事務掛起。

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

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

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

例如:@transactional(propagation=propagation.required)

(1)read uncommited:是最低的事務隔離級別,它允許另外乙個事務可以看到這個事務未提交的資料。

(2)read commited:保證乙個事物提交後才能被另外乙個事務讀取。另外乙個事務不能讀取該事物未提交的資料。

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

(4)serializable:這是花費最高代價但最可靠的事務隔離級別。事務被處理為順序執行。除了防止髒讀,不可重複讀之外,還避免了幻象讀

(5)髒讀、不可重複讀、幻象讀概念說明:

例如:

@transactional(isolation = isolation.read_uncommitted)

@transactional(timeout=30)

@transactional(rollbackfor=)

(1)程式設計式事務管理對基於 pojo 的應用來說是唯一選擇。我們需要在**中呼叫begintransaction()、commit()、rollback()等事務管理相關的方法,這就是程式設計式事務管理。

(2)基於 transactionproxyfactorybean的宣告式事務管理

(3)基於 @transactional 的宣告式事務管理

(4)基於aspectj aop配置事務

Spring事物管理

spring 事物的管理是申明式事物,通過在spring的xml檔案中配置3個元件,來管理整個專案的事物.最初事物的概念是在資料庫中提出的,為了保證資料的安全性.事物通俗的說就是原子的操作流程,符合acid,分別為原子性,一致性,隔離性,永久性.原子性是指事物中多張表的資料操作,要嘛全部成功,如其中...

spring 事物配置

struts hibernate spring整合開發web應用是相當流行的,只需要簡單的配置就能輕鬆的對資料庫進行crud操作,下面就hibernate spring的配置做一下剖析,一邊與大家一起分享經驗 1 準備工作 可以利用hibernate tools生成相關對映檔案已經po物件 dao物...

spring事物管理

事務 1.什麼是事務?事務是我們要執行的一系列操作,要麼完全執行,要麼完全不執行。這樣可以確保所有的操作都成功,否者不會跟新資料庫。2.事務有兩種結果 所有的操作執行成功,提交事務。如果有乙個操作執行失敗,將發生回滾,撤銷之前到事務發生開始時執行的操作。3.spring的事務使用 有兩個類datas...