日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Spring中配置DataSource数据源的几种选择

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring中配置DataSource数据源的几种选择 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring中配置DataSource數據源的幾種選擇


在Spring框架中有如下3種獲得DataSource對象的方法:

  1. 從JNDI獲得DataSource.
  2. 從第三方的連接池獲得DataSource.
  3. 使用DriverManagerDataSource獲得DataSource.


一、從JNDI獲得DataSource


SpringJNDI數據源配置信息:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">  <property name="jndiName">  <value>java:comp/env/jcptDataSourceJNDI</value>  </property>  
</bean>

jcptDataSourceJNDI是tomcat或者其他應用服務器配置的JNDI.

關于JNDI的配置(tomcat):

修改tomcat目錄conf/context.xml文件或server.xml文件:

<Resource name="jcptDataSourceJNDI" auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10"
username="tysp"
password="12345678"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.1.35:1521:orcl"/>

在server.xml中加入<Resource>元素:<Resource>元素用來定義JNDI Resource。

屬性:描述

name:指定Resource的JNDI名字

auth:指定管理Resource的Manager,它有兩個可選值:Container、Application

type:指定Resource所屬的Java類名

<Resource>元素中加入<ResourceParams>元素:<ResourceParams>元素用來指定各種參數值(也可以像上面那樣配置)

屬性:描述

factory ? ? ? 指定生成的DataResource的factory類名

maxActive ? ? 指定數據庫連接池中處于活動狀態的最大連接數目,0表示不受限制

maxIdle ? ? ? 指定數據庫連接池中處于空閑狀態的最大連接數目,0表示不受限制

maxWait ? ? ? 指定連接池中連接處于空閑狀態的最長時間,超過會拋出異常,-1表示無限

username ? ? ?指定連接數據庫的用戶名

password ? ? ?指定連接數據庫的口令

driverClassName ? ?指定連接數據庫的JDBC驅動程序

url ? ? ? ? ? ? 指定連接數據庫的URL

3、通過JNDI獲取DataSource:

Context context = new InitialContext();

DataSource ds = (DataSource)context.lookup("java:comp/env/jcptDataSourceJNDI");

4.在web.xml中加入(spring配置中可以不用)

<resource-ref>   <description>DB Connection</description>   <res-ref-name>jdbc/TestDB</res-ref-name>   <res-type>javax.sql.DataSource</res-type>   <res-auth>Container</res-auth>   
</resource-ref>


在web.xml中加入<resource-ref>元素:<resource-ref>元素表示在Web應用中引用JNDI資源  

屬性:描述

description ? ? 對所引用的資源的說明

res-ref-name ? ?指定所引用資源的JNDI名字,與<Resource>元素中的name屬性對應

res-type ? ? ? ?指定所引用資源的類名字,與<Resource>元素中的type屬性對應

res-auth ? ? ? ?指定所引用資源的Manager,與<Resource>元素中的auth屬性對應

更多信息:可以參考http://blog.csdn.net/cyxlzzs/article/details/7352837


二、從第三方的連接池獲得DataSource

Spring在第三方依賴包中包含了兩個數據源的實現類包,其一是Apache的DBCP,其二是 C3P0

1) DBCP類包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一個依賴 Jakarta commons-pool對象池機制的數據庫連接池,

所以在類路徑下還必須包括/lib/jakarta- commons/commons-pool.jar。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>  <property name="url" value="jdbc:oracle:thin:@192.168.1.35:1521:orcl"></property>  <property name="username" value="or_meal"></property>  <property name="password" value="or_meal"></property>  <property name="maxActive" value="100"></property>  <property name="maxIdle" value="30"></property>  <property name="maxWait" value="10"></property>  <property name="defaultAutoCommit" value="false"></property>  </bean>  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >  <property name="dataSource">  <ref bean="dataSource"  />  </property>  <property name="hibernateProperties">  <props>  <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect  </prop>  <prop key="show_sql">true</prop>  <prop key="format_sql">true</prop>  </props>  </property>  <property name="mappingResources">  <list></list>  </property>  </bean>


BasicDataSource提供了close()方法關閉數據源,所以必須設定destroy-method=”close”屬性,

以便Spring容器關閉時,數據源能夠正常關閉。除以上必須的數據源屬性外,還有一些常用的屬性:

defaultAutoCommit:設置從數據源中返回的連接是否采用自動提交機制,默認值為 true;

defaultReadOnly:設置數據源是否僅能執行只讀操作, 默認值為 false;

maxActive:最大連接數據庫連接數,設置為0時,表示沒有限制;

maxIdle:最大等待連接中的數量,設置為0時,表示沒有限制;

maxWait:最大等待秒數,單位為毫秒, 超過時間會報出錯誤信息;

validationQuery:用于驗證連接是否成功的查詢SQL語句,SQL語句必須至少要返回一行數據;

removeAbandoned:是否自我中斷,默認是 false ;

removeAbandonedTimeout:幾秒后數據連接會自動斷開,在removeAbandoned為true,提供該值;

logAbandoned:是否記錄中斷事件, 默認為 false;

2)C3P0是一個開放源代碼的JDBC數據源實現項目,C3P0類包位于Spring中lib/c3p0/c3p0-0.9.1.2.jar。

<bean  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >  <property name="locations">  <value>classpath:jdbc.properties</value>  </property>  
</bean>  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method=”close”>  <property name="driverClass"value="${jdbc.driverClassName}" />  <property name="jdbcUrl"value="${jdbc.url}" />  <property name="user"value="${jdbc.username}" />  <property name="password"value="${jdbc.password}" />  
</bean>


三、使用DriverManagerDataSource獲得DataSource

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  <property name="driverClassName">  <value>oracle.jdbc.driver.OracleDriver</value>  </property>  <property name="url">  <value>jdbc:oracle:thin:@192.168.1.35:orcl</value>  </property>  <property name="username">  <value>or_meal</value>  </property>  <property name="password">  <value>or_meal</value>  </property>  
</bean>  <bean id="dataBean" class="onlyfun.caterpillar.DataBean">   <property name="dataSource">   <ref bean="dataSource" />   </property>   
</bean>


DriverManagerDataSource建立連接是只要有連接就新建一個connection,根本沒有連接池的作用







總結

以上是生活随笔為你收集整理的Spring中配置DataSource数据源的几种选择的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。