`

Spring 数据库连接配置

 
阅读更多

一 ORACLE
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)(SERVER=DEDICATED)))" />
<property name="username" value="rootl" />
<property name="password" value="1234" />
</bean>
二 DB2
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.ibm.db2.jdbc.app.DB2Driver" />
<property name="url" value="jdbc:db2:thin:@localhost:5000/testDB" />
<property name="username" value="rootl" />
<property name="password" value="1234" />
</bean>
三 SQL Server
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName = testDB" />
<property name="username" value="rootl" />
<property name="password" value="1234" />
</bean>
三 MySQL
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.postgresql.Driver" />
<property name="url" value="jdbc:postgresql://localhost/ testDB" />
<property name="username" value="rootl" />
<property name="password" value="1234" />
</bean>

 

org.apache.commons.dbcp.BasicDataSource 需要commons-pool.jar,commons-dbcp-1.2.2.jar,commons-collections-3.2.jar三个JAR包

---------------------------------------------------------------------------------

Spring配置文件中数据库配置

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   <bean id="placeholderConfig"
       class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
       <property name="location">
           <value>classpath:init.properties</value>
       </property>
   </bean>
    <!-- bean id="dataSource"
       class="org.springframework.jndi.JndiObjectFactoryBean">
       <property name="jndiName">
           <value>${datasource.jndiName}</value>
       </property>
    </bean-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" dependency-check="none">
        <property name="driverClass">
            <value>${datasource.driverClassName}</value>
        </property>
        <property name="jdbcUrl">
           <value>${datasource.url}</value>
        </property>
        <property name="user">
           <value>${datasource.username}</value>
        </property>
        <property name="password">
           <value>${datasource.password}</value>
        </property>
        <property name="acquireIncrement">
           <value>${c3p0.acquireIncrement}</value>
        </property>
        <property name="initialPoolSize">
           <value>${c3p0.initialPoolSize}</value>
        </property>
        <property name="minPoolSize">
           <value>${c3p0.minPoolSize}</value>
        </property>
        <property name="maxPoolSize">
           <value>${c3p0.maxPoolSize}</value>
        </property>
        <property name="maxIdleTime">
           <value>${c3p0.maxIdleTime}</value>
        </property>
        <property name="idleConnectionTestPeriod">
           <value>${c3p0.idleConnectionTestPeriod}</value>
        </property>
        <property name="maxStatements">
           <value>${c3p0.maxStatements}</value>
        </property>
        <property name="numHelperThreads">
           <value>${c3p0.numHelperThreads}</value>
        </property>
</bean>
   <bean id="Hibernate3SessionFactory"
       class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
       <property name="dataSource">
           <ref local="dataSource" />
       </property>
       <property name="mappingResources">
           <list>
               <value>com/hwtx/hibernate/hbm/Login.hbm.xml</value>
           </list>
       </property>
       <property name="hibernateProperties">
           <props>
               <prop key="hibernate.dialect">
                   ${hibernate.dialect}
               </prop>
               <prop key="hibernate.show_sql">
                   ${hibernate.show_sql}
               </prop>
               <prop key="hibernate.jdbc.fetch_size">
                   ${hibernate.jdbc.fetch_size}
               </prop>
               <prop key="hibernate.jdbc.batch_size">
                   ${hibernate.jdbc.batch_size}
               </prop>
                <!-- prop key="hibernate.query.factory_class">
                    ${hibernate.query.factory_class}
               </prop-->
           </props>
       </property>
   </bean>
   <bean id="transactionManager"
   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
       <property name="sessionFactory">
       <ref local="Hibernate3SessionFactory" />
       </property>
   </bean>
<bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
<property name="dataSource">
    <ref bean="dataSource" />
</property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
    <ref bean="Hibernate3SessionFactory" />
</property>
<property name="jdbcExceptionTranslator">
    <ref bean="jdbcExceptionTranslator" />
</property>
</bean>
<bean id="userDAOProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
   <property name="transactionManager">
       <ref bean="transactionManager" />
   </property>
   <property name="transactionAttributes">
       <props>
                 <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="update*">PROPAGATION_REQUIRED</prop>
                 <prop key="find*">PROPAGATION_REQUIRED</prop>
                        <prop key="get*">PROPAGATION_REQUIRED</prop>
                        <prop key="remove*">PROPAGATION_REQUIRED</prop>
                        <prop key="del*">PROPAGATION_REQUIRED</prop>
                        <prop key="*">PROPAGATION_REQUIRED</prop>
       </props>
   </property>
</bean>
<bean id="loginDao" class="com.hwtx.login.LoginDaoImp">
       <property name="sessionFactory">
           <ref local="Hibernate3SessionFactory" />
       </property>
</bean>
<bean id="userDao" class="com.hwtx.user.UserDaoImp">
       <property name="sessionFactory">
           <ref local="Hibernate3SessionFactory" />
       </property>
</bean>
<bean name="/userAction" class="com.hwtx.struts.action.UserAction" >
   <property name="userDao">
       <ref bean="userDao" />
   </property>
</bean>
<bean name="/loginAction" class="com.hwtx.struts.action.LoginAction" >
   <property name="loginDao">
       <ref bean="loginDao" />
   </property>
</bean>
</beans>

init.properties文件

datasource.type=mysql
datasource.driverClassName=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://localhost:3306/login?useUnicode=true&characterEncoding=UTF-8
datasource.username=root
datasource.password=123

datasource.maxActive=10
datasource.maxIdle=2
datasource.maxWait=120000
datasource.whenExhaustedAction=1
datasource.validationQuery=select 1 from dual
datasource.testOnBorrow=true
datasource.testOnReturn=false

c3p0.acquireIncrement=3
c3p0.initialPoolSize=3
c3p0.idleConnectionTestPeriod=900
c3p0.minPoolSize=2
c3p0.maxPoolSize=50
c3p0.maxStatements=100
c3p0.numHelperThreads=10
c3p0.maxIdleTime=600

hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
#hibernate.dialect=org.hibernate.dialect.MySQLMyISAMDialect
#hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.jdbc.batch_size=25
hibernate.jdbc.fetch_size=50
hibernate.show_sql=true
hibernate.connection.release_mode=after_transaction

#bbscs.isloadconfig=false
#bbscs.safePath=C:/safe/

#cache.config=oscache.properties
#cacheup.config=oscache_up.properties
#cachefl.config=oscache_fl.properties

------------------------------------------------------------------------------------

引用   Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。


DBCP数据源方式:
    DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖 Jakarta commons-pool对象池机制的数据库连接池,所以在类路径下还必须包括/lib/jakarta- commons/commons-pool.jar。下面是使用DBCP配置MySql数据源的配置片断:

Xml代码 复制代码

  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>    

<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;
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics