当前位置:天才代写 > tutorial > JAVA 教程 > Spring中如何设置DataSource数据源

Spring中如何设置DataSource数据源

2017-11-02 08:00 星期四 所属: JAVA 教程 浏览:506

副标题#e#

在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.

2、关于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


#p#副标题#e#

二、从第三方的毗连池得到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;

#p#分页标题#e#

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,基础没有毗连池的浸染

 

    关键字:

天才代写-代写联系方式