spring jdbc事務管理

2021-08-30 12:27:25 字數 1016 閱讀 3736

以前在做spring security時,就注意到乙個細節,那就是當我只使用spring核心功能與hibernate時,居然也要依賴於spring-jdbc包,至少會報以下錯誤:

org/springframework/jdbc/support/sqlexceptiontranslator

當時並不在意這個,少就加上嘛,現在想來,的確有些奇怪,session、transaction之類的應該是hibernate自帶的,怎麼還要依賴於spring jdbc包,今天花了點時間看了下spring jdbc,但是奇怪的是,並沒有spring jdbc中發現有處理事物的類與方法,那spring jdbc是怎麼處理事務的呢?首先要做的就是在網上找資料,有前輩已經分析了,然後自己看了一下原始碼,的確是那樣的,那就是hibernate與spring jdbc進行事務控制的是同乙個類。在hibernatetransactionmanager中的確有這麼個注釋:

在此類的dobegin方法中,有一段**說得比較具體:

...// register the hibernate session's jdbc connection for the datasource, if set.

if (getdatasource() != null)

if (logger.isdebugenabled())

transactionsynchronizationmanager.bindresource(getdatasource(), conholder);

txobject.setconnectionholder(conholder);

}...

從上面的第乙個if語句中可以看出,只要jdbctemplate與hibernatetemplate使用的是同乙個datasource,那麼就可以達到控制事物的目的,這也說明了為什麼hibernatedaosupport為什麼要依賴spring jdbc,因為它的底層事物控制也要依賴於spring jdbc的事物控制,而不是hibernate的底層事物控制。

spring JDBC模板類 事務管理平台

jar包 建立乙個測試類 test jdbc模板的基本使用 public void demo1 1.配置內建連線池 2.將模板配置到spring中 也可以讓dao層繼承hibernatedaosupport類注入sessionfactory建立,或者是連線池 3.編寫測試類 引入spring aop...

Day3 Spring JDBC 事務管理

jdbc的程式設計 獲取鏈結 class.forname com.mysql.jdbc.driver connection conn drivermanager.getconnection url,username,password statement stmt conn.createstateme...

SPRING JDBC事務管理的三種配置方法

一.一般的jdbc事務,通常可以這樣處理 txproxytemplate abstract true class org.springframework.transaction.interceptor.transactionproxyfactorybean propagation required,...