Spring配置資料來源的三種方式 (dbcp c3p0 jndi)
[html] view plain copy
- 1,使用org.springframework.jdbc.datasource.DriverManagerDataSource
- 說明:DriverManagerDataSource建立連線是隻要有連線就新建一個connection,根本沒有連線池的作用。
- <bean id="dataSource"
- <property name="driverClassName"><value>${jdbc.driverClassName}</value></property>
- <property name="url"><value>${jdbc.url}</value></property>
- <property name
- <property name="password"><value>${jdbc.password}</value></property>
- </bean>
- 2.使用org.apache.commons.dbcp.BasicDataSource
- 說明:這是一種推薦說明的資料來源配置方式,它真正使用了連線池技術
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName">
- <value>oracle.jdbc.driver.OracleDriver</value>
- </property>
- <property name="url">
- <value>jdbc:oracle:thin:@localhost:1521:orcl</value>
- </property>
- <property name="username">
- <value>test</value>
- </property>
- <property name="password">
- <value>test</value>
- </property>
- <property name="maxActive">
- <value>255</value>
- </property>
- <property name="maxIdle">
- <value>2</value>
- </property>
- <property name="maxWait">
- <value>120000</value>
- </property>
- </bean>
- 3.使用org.springframework.jndi.JndiObjectFactoryBean
- 說明:JndiObjectFactoryBean 能夠通過JNDI獲取DataSource
- <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
- <property name="jndiName"><value>java:comp/env/jdbc/roseindiaDB_local</value></property>
- </bean>
- 總結:3種方式中的第一種沒有使用連線池,故少在專案中用到,
- 第三種方式需要在web server中配置資料來源,不方便於部署,本人推薦使用每二種方式進行資料來源的配置。
配置一個數據源
Spring在第三方依賴包中包含了兩個資料來源的實現類包,其一是Apache的DBCP,其二是 C3P0。
可以在Spring配置檔案中利用這兩者中任何一個配置資料來源。
DBCP資料來源
DBCP類包位於 <spring_home></spring_home>/lib/jakarta-commons/commons-dbcp.jar,
DBCP是一個依賴 Jakarta commons-pool物件池機制的資料庫連線池,
所以在類路徑下還必須包括<spring_home></spring_home>/lib/jakarta- commons/commons-pool.jar。
下面是使用DBCP配置MySql資料來源的配置片斷:
xml 程式碼
[html] view plain copy
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="com.mysql.jdbc.Driver" />
- <property name="url" value="jdbc:mysql://localhost:3309/sampledb" />
- <property name="username" value="root" />
- <property name="password" value="1234" />
- </bean>
BasicDataSource提供了close()方法關閉資料來源,所以必須設定destroy-method=”close”屬性,
以便Spring容器關閉時,資料來源能夠正常關閉。除以上必須的資料來源屬性外,還有一些常用的屬性:
defaultAutoCommit:設定從資料來源中返回的連線是否採用自動提交機制,預設值為 true;
defaultReadOnly:設定資料來源是否僅能執行只讀操作, 預設值為 false;
maxActive:最大連線資料庫連線數,設定為0時,表示沒有限制;
maxIdle:最大等待連線中的數量,設定為0時,表示沒有限制;
maxWait:最大等待秒數,單位為毫秒, 超過時間會報出錯誤資訊;
validationQuery:用於驗證連線是否成功的查詢SQL語句,SQL語句必須至少要返回一行資料,
如你可以簡單地設定為:“select count(*) from user”;
removeAbandoned:是否自我中斷,預設是 false ;
removeAbandonedTimeout:幾秒後資料連線會自動斷開,在removeAbandoned為true,提供該值;
logAbandoned:是否記錄中斷事件, 預設為 false;
C3P0資料來源
C3P0是一個開放原始碼的JDBC資料來源實現專案,它在lib目錄中與Hibernate一起釋出,
實現了