溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用C3P0改造JDBC對數(shù)據(jù)庫的連接

發(fā)布時間:2020-08-24 20:14:06 來源:腳本之家 閱讀:170 作者:learnpy3 欄目:編程語言

本文實(shí)例為大家分享了使用C3P0改造JDBC對數(shù)據(jù)庫的連接,供大家參考,具體內(nèi)容如下

1.Connection對象在JDBC使用的時候.使用的時候就會去創(chuàng)建一個對象,使用結(jié)束以后就會將這個對象給銷毀了.每次創(chuàng)建和銷毀對象都是耗時操作.需要使用連接池對其進(jìn)行優(yōu)化.程序初始化的時候,初始化多個連接,將多個連接放入到池中(內(nèi)存中).每次獲取的時候,都可以直接從連接池中進(jìn)行獲取.使用結(jié)束以后,將連接歸還到池中。

本文介紹的連接池為:C3P0

2.使用步驟

導(dǎo)入jar包:c3p0-0.9.1.2.jar
在src文件夾下創(chuàng)建c3p0-config.xml文件
使用C3P0連接池

3.代碼實(shí)現(xiàn)

package lesson15_jdbc;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class C3P0_lianjiechi {
  public static void main(String[] args) {
    //使用自定義配置
    ComboPooledDataSource dataSource1=new ComboPooledDataSource();
    //使用自定義配置
    //ComboPooledDataSource dataSource2 = new ComboPooledDataSource("");
    //建立連接
    try{
      Connection conn = dataSource1.getConnection();
      String sql="select * from 1_mytable1";
      PreparedStatement pst=conn.prepareStatement(sql);
      ResultSet res = pst.executeQuery();
      while(res.next()){
        System.out.println(res.getString("n")+"->"+res.getString("age")+"->"+res.getString("gender"));
      }
      res.close();
      pst.close();
      conn.close();
    }catch (SQLException e){
      e.printStackTrace();
    }
  }
}

4.c3p0-config.xml配置文件(如下)

<c3p0-config>
  <!-- 默認(rèn)配置,如果沒有指定則使用這個配置 -->
  <default-config>
   <!-- 基本配置 -->
   <property name="driverClass">com.mysql.jdbc.Driver</property>
   <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/1_mydata</property>
   <property name="user">root</property>
   <property name="password">123456</property>
  
   <!--擴(kuò)展配置-->
   <property name="checkoutTimeout">30000</property>
   <property name="idleConnectionTestPeriod">30</property>
   <property name="initialPoolSize">10</property>
   <property name="maxIdleTime">30</property>
   <property name="maxPoolSize">100</property>
   <property name="minPoolSize">10</property>
   <property name="maxStatements">200</property>
  </default-config> 
  
  
  <!-- 命名的配置 -->
  <named-config name="Space_c3p0">
   <property name="driverClass">com.mysql.jdbc.Driver</property>
   <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/1_mydata</property>
   <property name="user">root</property>
   <property name="password">123456</property>
   
   
   <!-- 如果池中數(shù)據(jù)連接不夠時一次增長多少個 -->
   <property name="acquireIncrement">5</property>
   <property name="initialPoolSize">20</property>
   <property name="minPoolSize">10</property>
   <property name="maxPoolSize">40</property>
   <property name="maxStatements">20</property>
   <property name="maxStatementsPerConnection">5</property>
  </named-config>
</c3p0-config> 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI