spring幾種Dao支援配置

2021-08-30 12:37:18 字數 2661 閱讀 8304

事務的處理一般來說有兩種方式:

乙個是依賴特定的資源的事務:如通過jdbc,jta,hibernate transaction。

還有乙個就是依賴視窗的引數進行事務管理,像ejb容器事務

spring對於以上兩種都有相應的實現,還提供了一些輔助類可供我們選擇使用,如基於jdbc,jdo,hibernate的擴充套件類.而對於依賴容器的引數化事務管理來說,spring體現出一它的優勢,它本身也是乙個容器,但相對ejb容器它來它顯得很輕巧(當然在後來外掛程式越來越多的情況下,我們需要擯棄一些我們不用的模組)。我們不用付出其他的代價,就可以通過spring實現容器的事務管理。

下面就來說說基於jdbc,hibernate這兩種方式的事務管理與非事務管理的配置:

1.取得source連線

首先對於乙個db操作,我們必須要取得db連線,而在spring下取得這個連線的方式可以採用

1.1.jndi

1.2.配置datasource(spring方式)或者sessionfactory(hibernate)

且看下面**:

對於jndi可以參考如下實現:

jdbc_sdcf

對於datasource方式如下:

oracle.jdbc.driver.oracledriver

jdbc:oracle:thin:@127.0.0.1:1521:oracle

test

test

而對於sessionfactory的方式來說, 我們可以有兩種方式來配置它:

乙個是基於在spring的datasource方式上進行配置:

org.hibernate.dialect.oracledialect

true

而另乙個方式就是在hibernate.hbm.xml方式上進行配置:

這個hibernate.cfg.xml方式可以利用myeclipseide匯入hibernate功能時自動建立,如下例子:

<?xml version='1.0' encoding='utf-8'?>

org.hibernate.dialect.oracledialect

jdbc:oracle:thin:@localhost:1521:oracle

test

test

oracle.jdbc.driver.oracledriver

local_oracle

2.事務管理(transactionmanager)的兩種初始化方式:

一種是根據datasource來初始化我們的事務管理器,另一種則是根據sessionfactory(hibernate方式)來初始化我們的事務管理器:

3.jdbc在spring下的事務與非事務方式

3.1.非事務處理方式

jdbc在spring下的非事務方式很簡單,它其實就是於jdbc的簡單封裝:

public inte***ce jdbcdao 

public class jdbcdaoimpl extends jdbcdaosupport implements jdbcdao

}

這是簡單的sql語句插入,對於配置檔案,我們只需要配置乙個datasource跟如下的bean:

這種方式的缺點就是它是非事務處理方,即如果後面的資料處理錯誤時,而這時候如果前面已經進入資料操作了,它將無法回滾。

3.2.事務處理方式

顧名思義,這種方式是可以回滾前面所做的事情的。它的引數化配置如下:

true

propagation_required

propagation_required,readonly

如果我們想預設對所有的事件進行事務處理我們可以不用配置transactionattributes

4.hibernate在spring下的事務與非事務處理方式:

4.1 非事務處理方式很簡單:

4.2. 而對於事務處理方式的引數化配置:

propagation_required

總:

對於專案開發中,實際上經常會碰到spring與hibernate一起結合來進行引數化配置,但很多時候我們總是會分不清到底是哪個跟哪個。但其實我們只要掌握了,事務引數化配置的原理。如如何取得sessionfactory,它有幾種方式。是否要引用datasource來建立,及事務管理器的各種引數化配置方式等等,總之,只要明白的其中的原理就不難解決配置上的這塊問題了。

Spring提供了編寫DAO的支援類

1 daosupport 類 jdbcdaosupport hibernatedaosupport 自己寫的 dao按使用的訪問技術,有選擇的 繼承它們 類似於以前寫的basedao 類 2 template 類 jdbctemplate hibernatetemplate 封裝了通用操作,如 增刪...

spring幾種事務配置

lygle 寫道 根據 機制不同,有以下幾種配置方式 先定義乙個dao介面及實現類 public inte ce iuserdao實現類 public class userdaoimpl extends hibernatedaosupport implements iuserdao 第一種為每個be...

Spring 配置 事務的幾種方式

spring配置檔案中關於事務配置總是由三個組成部分,datasource transactionmanager和 機制這三部分,無論是那種配置方法,一般變化的只是 機制這塊!首先我建立了兩個類,乙個介面乙個實現 package com.dao public inte ce userdao實現 pa...