1. 程式人生 > >Spring配置資料來源的三種方式 (dbcp c3p0 jndi)

Spring配置資料來源的三種方式 (dbcp c3p0 jndi)

 

[html]  view plain copy  
  1. 1,使用org.springframework.jdbc.datasource.DriverManagerDataSource   
  2. 說明:DriverManagerDataSource建立連線是隻要有連線就新建一個connection,根本沒有連線池的作用。   
  3. <bean id="dataSource"
     class="org.springframework.jdbc.datasource.DriverManagerDataSource">   
  4.               <property name="driverClassName"><value>${jdbc.driverClassName}</value></property>   
  5.               <property name="url"><value>${jdbc.url}</value></property>   
  6.               <property name
    ="username"><value>${jdbc.username}</value></property>   
  7.               <property name="password"><value>${jdbc.password}</value></property>   
  8.   
  9.        </bean>   
  10. 2.使用org.apache.commons.dbcp.BasicDataSource   
  11. 說明:這是一種推薦說明的資料來源配置方式,它真正使用了連線池技術   
  12. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">   
  13.               <property name="driverClassName">   
  14.                      <value>oracle.jdbc.driver.OracleDriver</value>   
  15.               </property>   
  16.               <property name="url">   
  17.                      <value>jdbc:oracle:thin:@localhost:1521:orcl</value>   
  18.               </property>   
  19.               <property name="username">   
  20.                      <value>test</value>   
  21.               </property>   
  22.               <property name="password">   
  23.                      <value>test</value>   
  24.               </property>   
  25.               <property name="maxActive">   
  26.                      <value>255</value>   
  27.               </property>   
  28.               <property name="maxIdle">   
  29.                      <value>2</value>   
  30.               </property>   
  31.               <property name="maxWait">   
  32.                      <value>120000</value>   
  33.               </property>   
  34.        </bean>   
  35. 3.使用org.springframework.jndi.JndiObjectFactoryBean   
  36. 說明:JndiObjectFactoryBean 能夠通過JNDI獲取DataSource   
  37. <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">   
  38.               <property name="jndiName"><value>java:comp/env/jdbc/roseindiaDB_local</value></property>   
  39.        </bean>   
  40. 總結:3種方式中的第一種沒有使用連線池,故少在專案中用到,  
[html]  view plain copy  
  1. 第三種方式需要在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  
  1. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"          
  2.         destroy-method="close">          
  3.     <property name="driverClassName" value="com.mysql.jdbc.Driver" />         
  4.     <property name="url" value="jdbc:mysql://localhost:3309/sampledb" />         
  5.     <property name="username" value="root" />         
  6.     <property name="password" value="1234" />         
  7. </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一起釋出,

實現了