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的數據庫連接池。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章