zoukankan      html  css  js  c++  java
  • 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或者其它应用server配置的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

    二、从第三方的连接池获得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,根本没有连接池的作用

  • 相关阅读:
    Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)
    将生成200 个激活码(或者优惠券)保存到 oracle关系型数据库中
    将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果
    面试笔试题:多表关联的update语句、将in中的查询条件按顺序输出和SQL语句增加列、修改列、删除列
    sql中级到高级
    Linux常用命令
    类的特殊成员方法
    正则表达式的方法匹配规则
    启动ecilpse 报错an error has occurred. see the log file
    访问修饰符
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5123283.html
Copyright © 2011-2022 走看看