天天看點

spring資料源配置四種方式配置Spring資料源

配置Spring資料源

不管采用何種持久化技術,都需要定義資料源。Spring中提供了4種不同形式的資料源配置方式:

spring自帶的資料源(DriverManagerDataSource),DBCP資料源,C3P0資料源,JNDI資料源。

一、spring自帶的資料源:DriverManagerDataSource

二、DBCP資料源

DBCP的配置依賴于2個jar包commons-dbcp.jar,commons-pool.jar。

BasicDataSource提供了close()方法關閉資料源,是以必須設定destroy-method=”close” 屬性,以便Spring容器關閉時,資料源能夠正常關閉。除以上必須的資料源屬性外還有一些常用的屬性:

initialSize :連接配接池啟動時的初始值

maxActive:最大連接配接資料庫連接配接數,設定為0時,表示沒有限制; -->

maxIdle :最大空閑連接配接,當經過一個高峰期後,連接配接池可以慢慢将已經用不到的連接配接釋放一部分,一直減少到maxIdle

minIdle:最小空閑值,當空閑的連接配接數少于minIdle時,連接配接池就會預申請一些連接配接,以免洪峰來時來不及申請。

defaultAutoCommit:設定從資料源中傳回的連接配接是否采用自動送出機制,預設為true; 

defaultReadOnly:設定資料源是否僅能執行隻讀操作, 預設值為 false; 

maxWait:最大等待秒數,機關為毫秒, 超過時間會報出錯誤資訊; 

validationQuery:用于驗證連接配接是否成功的查詢SQL語句,SQL語句必須至少要傳回一 行資料, 如可以簡單地設定為:“select count(*) from user”; 

removeAbandoned:是否自我中斷,預設是 false ; 

removeAbandonedTimeout:幾秒後資料連接配接會自動斷開,在removeAbandoned為true, 提供該值; 

logAbandoned:是否記錄中斷事件, 預設為 false;

三、C3P0資料源

C3P0是一個開放源代碼的JDBC資料源實作項目,C3P0依賴于jar包c3p0.jar。

ComboPooledDataSource和BasicDataSource一樣提供了一個用于關閉資料源的close()方法,這樣我們就可以保證Spring容器關閉時資料源能夠成功釋放。

C3P0擁有比DBCP更豐富的配置屬性,通過這些屬性,可以對資料源進行各種控制:

acquireIncrement:當連接配接池中的連接配接用完時,C3P0一次性建立新連接配接的數目;

acquireRetryAttempts:定義從資料庫擷取新連接配接失敗後重複嘗試擷取次數,預設為30;

acquireRetryDelay:兩次連接配接中間隔時間,機關毫秒,預設為1000;

autoCommitOnClose:連接配接關閉時預設将所有未送出的操作復原。預設為false;

checkoutTimeout:當連接配接池用完時用戶端調用getConnection()後等待擷取新連接配接的時 間,逾時後将抛出SQLException,如設為0則無限期等待。機關毫秒,預設為0;

idleConnectionTestPeriod:隔多少秒檢查所有連接配接池中的空閑連接配接,預設0表示不檢查;

initialPoolSize:初始化時建立的連接配接數,應在minPoolSize與maxPoolSize之間取值。預設為3;

maxIdleTime:最大空閑時間,超過空閑時間的連接配接将被丢棄。為0或負數則永不丢棄。預設為0;

maxPoolSize:連接配接池中保留的最大連接配接數。預設為15;

maxStatements:JDBC的标準參數,用以控制資料源内加載的PreparedStatement數量。 預設為0;

maxStatementsPerConnection:連接配接池内單個連接配接所擁有的最大緩存Statement數。預設為0;

四、JNDI資料源

如果應用配置在高性能的應用伺服器(如WebLogic或Websphere,tomcat等)上,我們可能更希望使用應用伺服器本身提供的資料源。應用伺服器的資料源 使用JNDI開放調用者使用,Spring為此專門提供引用JNDI資源的JndiObjectFactoryBean類。

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 

   <property name="jndiName" value="java:comp/env/jdbc/orclight"/> 

</bean> 

Spring 2.0為擷取J2EE資源提供了一個jee命名空間,通過jee命名空間,可以有效地簡化J2EE資源的引用。下面是使用jee命名空間引用JNDI資料源的配置:

學習筆記

繼續閱讀