【JavaWeb】c3p0連接池與MySQL
阿新 • • 發佈:2018-02-24
code pass 內容 try root c3p0連接池 body void 驅動
正文之前
在之前的文章講到了傳統的JDBC連接MySQL的方式,但是這樣的方式在進行多個連接時,就顯得效率低下,明顯不如連接池的效率,所以我們這次來講解一下JDBC連接池之一:c3p0
正文
1. 準備工作
- IntelliJ IDEA
- c3p0-0.9.5.2(jar)
- MySQL
2. 配置 c3p0-config.xml
default-config
在配置之前,需要先進行建立數據庫的工作,本文還是采用上篇文章中的名為 customer 的數據庫
然後在工程的 src 目錄下新建一個名為 c3p0-config 的XML文件(文件名不能自定義)
然後開始配置:
<!-- 數據庫地址 --> <property name="jdbcUrl">jdbc:mysql://localhost:3306/customer</property> <!-- 數據庫驅動 --> <property name="driverClass">com.mysql.jdbc.Driver</property> <!-- 用戶名 --> <property name="user">root</property> <!-- 密碼 --> <property name="password">3865933</property>
先寫基本的數據庫信息,然後我們再來寫常用的連接池屬性,若要查詢全部屬性,可閱讀官網指南,屬性也包含於
<!-- 連接池初始化時創建的連接數 --> <property name="initialPoolSize">1</property> <!-- 連接池中的最小連接數 --> <property name="minPoolSize">1</property> <!-- 連接池中的最小連接數 --> <property name="maxPoolSize">2</property> <!-- 無空閑連接可用時,可一次性創建新連接的數量 --> <property name="acquireIncrement">1</property> <!-- 獲取數據庫連接失敗後重復嘗試的次數 --> <property name="acquireRetryAttempts">1</property> <!-- 兩次連接的間隔時間,單位為毫秒 --> <property name = "acquireRetryDelay">1000</property>
給出完整的文件圖片:
named-config
可以添加 named-config 來增加數據庫配置,內容與default-config一致,我連接了另一個數據庫 product :
3. 寫個demo
先搞定數據源:
private static ComboPooledDataSource dataSource1 = new ComboPooledDataSource("test");
private static ComboPooledDataSource dataSource2 = new ComboPooledDataSource();
根據數據源,進行連接
private static void getConnection(){ try{ Connection connection = dataSource1.getConnection(); System.out.println("連接數據庫 product 成功!"); connection.close(); System.out.println("數據庫連接已關閉!"); }catch(Exception e){ System.out.println("連接數據庫失敗!"); } try{ Connection connection = dataSource2.getConnection(); System.out.println("連接數據庫 customer 成功!"); connection.close(); System.out.println("數據庫連接已關閉!"); }catch(Exception e){ System.out.println("連接數據庫失敗!"); } } public static void main(String[] args){ getConnection(); }
運行結果:
如果需要有多個連接,使用連接池是不二之選,關於c3p0的講解到此為止了,謝謝。
【JavaWeb】c3p0連接池與MySQL