Java配置数据源的几种方式

Spring应用程序经常部署到在Java EE应用服务器中,如WebShpere,JBoss,resin或者像Tomcat这样的Web容器,这些服务允许你配置通过JNDI获取数据源。在项目中经常遇到配置数据源,根据在工作中的学习和书上的学习,现在总结一下,算是一点自己的体会吧!本文以resin为例
1.使用JNDI数据源
这种方式本质就是配置Web容器的配置文件中,随着应用程序的启动,连接数据源,在java应用程序中,通过配置数据源的JNDI名称,获取相应的数据源。
例如:

<database>
            <jndi-name>db/demo1</jndi-name>
            <driver type="net.sourceforge.jtds.jdbc.Driver">
            <url>jdbc:jtds:sqlserver://192.168.0.0:18991;DatabaseName=aaaaa</url>
            <user>xxx</user>
            <password>******</password>
            </driver>
            <prepared-statement-cache-size>8</prepared-statement-cache-size>
            <max-connections>20</max-connections>
            <max-idle-time>30s</max-idle-time>
</database>
<database>
            <jndi-name>db/demo2</jndi-name>
            <driver type="net.sourceforge.jtds.jdbc.Driver">       
            <url>jdbc:jtds:sqlserver://192.168.0.1:18991;DatabaseName=bbbbbb</url>
            <user>xxx</user>
            <password>******</password>
            </driver>
            <prepared-statement-cache-size>8</prepared-statement-cache-size>
            <max-connections>20</max-connections>
            <max-idle-time>30s</max-idle-time>
</database>

这段配置需要配置在resin容器的配置文件中,在java的应用开发中就可以使用jndi-name配置的数据源名称获取相应的数据源连接。
2.使用数据源连接池
主要配置在Spring的配置文件进行配置,这个例子中是用了dbcp的数据源连接池,例如spring-context.xml中。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-ethod="close">      
        <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
        <property name="url" value="jdbc:jtds:sqlserver://127.0.0.1:18992/demo" />
        <property name="username" value="xxx" />
        <property name="password" value="***" />
        <!--initialSize: 初始化连接-->
        <property name="initialSize" value="6"/>    
        <!--maxIdle: 最大空闲连接-->
        <property name="maxIdle" value="10"/>
        <!--minIdle: 最小空闲连接-->
        <property name="minIdle" value="6"/>
        <!--maxActive: 最大连接数量-->
        <property name="maxActive" value="20"/>
        <!--removeAbandoned: 是否自动回收超时连接-->
        <property name="removeAbandoned" value="true"/>
        <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->
        <property name="removeAbandonedTimeout" value="180"/>
        <!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于6秒-->
        <property name="maxWait" value="60000"/>
        <property name="minEvictableIdleTimeMillis" value="1"/>
        <property name="timeBetweenEvictionRunsMillis" value="1"/>
        <property name="testOnBorrow">
            <value>true</value>
        </property>
        <property name="testOnReturn">
            <value>true</value>
        </property>
        <property name="testWhileIdle">
            <value>true</value>
        </property>
        <property name="validationQuery">
            <value>SELECT 1</value>
        </property>
    </bean>

3.基于JDBC驱动的数据源
这种配置其实和上面的2在在配置方式和配置参数中大致一样,就是在采用驱动的时候采用了不同的驱动类型,使用了最基本的jdbc的数据库连接池。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。