如何正確使用spring的事務管理

2021-09-01 17:03:10 字數 1294 閱讀 7109

在使用spring進行資料庫事務管理時,不管是採用jdbc還是hibernate都必須處理好如何獲取鏈結的問題,不能過簡單使用getsession(),和 ds.getconnect()來獲取資料連線,否則鏈結一次請求訪問就會耗用多個資料連線.

xml配置(省略,網上有很多相關的資料)

基礎dao

public class genericdao

//獲得session

protected session getsession()

......

}org.springframework.jdbc.datasource.datasourcetransactionmanager

class="org.apache.commons.dbcp.basicdatasource"

destroy-method="close">

value="com.mysql.jdbc.driver">

class="org.springframework.jdbc.datasource.datasourcetransactionmanager">

基礎的資料服務層片段:

public abstract class abstractservicebase

/*** 獲取乙個預設的資料連線

* @return

* @throws sqlexception

*/public connection getconnection()catch(exception ex) }

} 為什麼會發生這樣的事情?,那麼這個跟spring的事務處理機制 有關係:

spring事務處理基本原理,主要是通過**類來完成,以org.springframework.jdbc.datasource.datasourcetransactionmanager.class為例用偽**進行說明:

1.採用執行緒本地變數儲存要進行事務控制的connection

class  transactioncontext

public void commint()//關閉執行緒內的所有連線

public void rollback()回滾所有連線

} 2.生成datasource的**類

class datasourceproxy implements  datasource

}3.對具體的服務類訪問使用**類進行訪問

calss serviceproxy implemens servicecatch(exception ex)}}

所以,使用spring 事務管理,必須自己去處理資料連線的唯一性。

Spring事務(一) Spring事務的使用

事務的經典舉例 某人要在商店使用電子貨幣購買100元的東西,當中至少包括兩個操作 該人賬戶減少100元 商店賬戶增加100元 事務就是要確保以上兩個操作 都能完成 或者 一起取消,否則就會出現100元平白消失或出現的情況。摘自wiki spring事務有兩種方式 程式設計式事務管理 宣告式事務管理 ...

spring的事務如何配置

1.spring的事務如何配置 spring的宣告式事務配置 1.class org.springframework.orm.hibernate3.localsessionfactorybean web inf classes hibernate.cfg.xml 2.配置事務管理器 class or...

spring是如何控制事務的?

spring 的事務,可以說是 spring aop 的一種實現。aop面向切面程式設計,即在不修改源 的情況下,對原有功能進行擴充套件,通過 類來對具體類進行操作。spring是乙個容器,通過spring這個容器來對物件進行管理,根據配置檔案來實現spring對物件的管理。spring的事務宣告有...