成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java連接池總結(jié)復習及推薦

開發(fā) 后端
本文給出一個例子,總結(jié)了一些學習Java連接池的一些心得。最后,作者一并介紹了現(xiàn)在主流的幾個開源Java連接池。

Java連接池是Java學習者必知的一個基礎(chǔ)概念。下面給出一個例子,總結(jié)了一些學習Java連接池的一些心得。本例子只有三個文件,下面是其源碼

resourceBundle.properties文件

  1. connection.username=sa  
  2. connection.password=sa  
  3. connection.url=jdbc:sqlserver://localhost:1433;databaseName=collectionpool connection.driverClass=com.microsoft.jdbc.sqlserver.SQLServerDriver  
  4. connection.poolSize=20 
ResourceManager.java文件

  1. package org.topCSA.connection.db.Resource;  
  2. import java.util.ResourceBundle;  
  3. publicclass ResourceManager {  
  4.     privatestatic ResourceBundle r;  
  5.     static{  
  6.        r = ResourceBundle.getBundle("resourceBundle");  
  7.     }  
  8.     publicstatic String getDriverClass(){  
  9.        returnr.getString("connection.driverClass");  
  10.     }  
  11.     publicstatic String getUrl(){  
  12.        returnr.getString("connection.url");  
  13.     }  
  14.     publicstatic String getUsername(){  
  15.        returnr.getString("connection.username");  
  16.     }  
  17.     publicstatic String getPassword(){  
  18.        returnr.getString("connection.password");  
  19.     }  
  20.     publicstaticintgetPoolSize(){  
  21.        int poolSize = Integer.valueOf(r.getString("connection.poolSize"));  
  22.        return poolSize;  
  23.     }  
  24.     publicstaticvoid refresh(){  
  25.        r = ResourceBundle.getBundle("resourceBundle");  
  26.     }  

DbConnectionPool.java類

  1. package org.topCSA.connection.db;  
  2. import java.sql.Connection;  
  3. import java.sql.DriverManager;  
  4. import java.sql.SQLException;  
  5. import java.util.ArrayList;  
  6. import java.util.List;  
  7. import org.topCSA.connection.db.Resource.ResourceManager;  
  8. publicclass DbConnectionPool {  
  9.     private List<Connection> pool;  
  10.     privateintpoolSize = 1;  
  11.     private Connection conn = null;  
  12.     privatestatic DbConnectionPool instance = null;  
  13.     /**  
  14.      *單粒模式私有構(gòu)造方法,獲得本類的對象,通過getIstance方法。  
  15.      */ 
  16.     private DbConnectionPool() {  
  17.        pool = new ArrayList<Connection>();  
  18.        this.createConnection();  
  19.     }  
  20.     /**  
  21.      *得到當前連接池的一個實例  
  22.      */ 
  23.     publicstatic DbConnectionPool getInstance() {  
  24.        if (instance == null) {  
  25.            instance = new DbConnectionPool();  
  26.        }  
  27.        returninstance;  
  28.     }  
  29.     /**  
  30.      *得到連接池中的一個連接  
  31.      */ 
  32.     publicsynchronized Connection getConnection() {  
  33.        if (pool.size() > 0) {  
  34.            Connection conn = pool.get(0);  
  35.            pool.remove(conn);  
  36.            return conn;  
  37.        } else {  
  38.            returnnull;  
  39.        }  
  40.     }  
  41.     /**  
  42.      *創(chuàng)建初始的數(shù)據(jù)庫連接  
  43.      */ 
  44.     privatevoid createConnection() {  
  45.        int temp = ResourceManager.getPoolSize();  
  46.        if(temp > 0){  
  47.            this.poolSize = temp;  
  48.        }  
  49.        for (int i = 0; i < poolSize; i++) {  
  50.            try {  
  51.               Class.forName(ResourceManager.getDriverClass());  
  52.               conn = DriverManager.getConnection(ResourceManager.getUrl(),ResourceManager.getUsername(),ResourceManager.getPassword());  
  53.               pool.add(conn);  
  54.            } catch (ClassNotFoundException e) {  
  55.               e.printStackTrace();  
  56.            } catch (SQLException e) {  
  57.               e.printStackTrace();  
  58.            }  
  59.        }  
  60.     }  
  61.     /**  
  62.      *用完將連接放回到連接池中  
  63.      *  
  64.      *@paramconn  
  65.      */ 
  66.     publicsynchronizedvoid release(Connection conn) {  
  67.        pool.add(conn);  
  68.     }  
  69.     
  70.     /**  
  71.      *關(guān)閉連接池中的所有連接  
  72.      */ 
  73.     publicsynchronizedvoid closePool() {  
  74.        for (int i = 0; i < pool.size(); i++) {  
  75.            try {  
  76.               conn = ((Connection) pool.get(i));  
  77.               conn.close();  
  78.               pool.remove(i);  
  79.            } catch (SQLException e) {  
  80.               e.printStackTrace();  
  81.            }  
  82.        }  
  83.     }  

接下來在說一下,現(xiàn)在主流的開源java連接池:

1.C3P0  :是一個開放源代碼的JDBC連接池,它在lib目錄中與Hibernate一起發(fā)布,包括了實現(xiàn)jdbc3和jdbc2擴展規(guī)范說明的Connection 和Statement 池的DataSources 對象。參考網(wǎng)站: http://sourceforge.net/projects/c30/

2.Proxool :是一個Java SQL Driver驅(qū)動程序,提供了對你選擇的其它類型的驅(qū)動程序的連接池封裝。可以非常簡單的移植到現(xiàn)存的代碼中。完全可配置??焖?,成熟,健壯??梢酝该鞯貫槟悻F(xiàn)存的JDBC驅(qū)動程序增加連接池功能。  參考網(wǎng)站: http://proxool.sourceforge.net

3.Jakarta DBCP  :是一個依賴Jakarta commons-pool對象池機制的數(shù)據(jù)庫連接池.DBCP可以直接的在應用程序用使用。參考網(wǎng)站: http://jakarta.apache.org/commons/dbcp/

4.ctionBroker  :DBCP是一個依賴Jakarta commons-pool對象池機制的數(shù)據(jù)庫連接池.DBCP可以直接的在應用程序用使用。參考網(wǎng)站:http://jakarta.apache.org/commons/dbcp/

5.DBPool  :是一個高效的易配置的數(shù)據(jù)庫連接池。它除了支持連接池應有的功能之外,還包括了一個對象池使你能夠開發(fā)一個滿足自已需求的數(shù)據(jù)庫連接池。參考網(wǎng)站:http://homepages.nildram.co.uk/~slink/java/DBPool/

6.XAPool :是一個高效的易配置的數(shù)據(jù)庫連接池。它除了支持連接池應有的功能之外,還包括了一個對象池使你能夠開發(fā)一個滿足自已需求的數(shù)據(jù)庫連接池。參考網(wǎng)站:http://xapool.experlog.com/

7.SmartPool  :SmartPool是一個連接池組件,它模仿應用服務器對象池的特性。SmartPool能夠解決一些臨界問題如連接泄漏(connection leaks),連接阻塞,打開的JDBC對象如Statements,PreparedStatements等. SmartPool的特性包括支持多個pools,自動關(guān)閉相關(guān)聯(lián)的JDBC對象, 在所設(shè)定time-outs之后察覺連接泄漏,追蹤連接使用情況, 強制啟用最近最少用到的連接,把SmartPool"包裝"成現(xiàn)存的一個pool等。參考網(wǎng)站:http://smartpool.sourceforge.net/

8.MiniConnectionPoolManager  :MiniConnectionPoolManager是一個輕量級JDBC數(shù)據(jù)庫連接池。它只需要Java1.5(或更高)并且沒有依賴第三方包。參考網(wǎng)站:http://www.source-code.biz/snippets/java/8.htm

本文來自xcp的博客:《java 連接池 總結(jié) 復習》

【編輯推薦】

  1. 淺談幾種如何減少JDBC連接池開銷的方法
  2. 研究分析JDBC技術(shù)在數(shù)據(jù)庫連接池上的應用
  3. 一個關(guān)于連接池的JDBC教程
  4. Java的JDBC數(shù)據(jù)庫連接池實現(xiàn)方法
  5. ibatis下加入c3p0連接池的方法
責任編輯:yangsai 來源: xcp的博客
相關(guān)推薦

2025-01-10 00:00:10

2019-12-30 15:30:13

連接池請求PHP

2010-06-25 10:36:27

Java連接池

2015-04-27 09:50:45

Java Hibern連接池詳解

2018-02-07 16:23:58

連接池內(nèi)存池AI

2011-06-01 13:54:10

MySQL

2009-09-22 14:52:55

Hibernate p

2009-09-22 16:04:50

Hibernate連接

2011-07-04 09:39:25

java連接池

2009-06-17 16:22:45

Hibernate連接

2022-11-11 09:41:04

連接池微服務數(shù)據(jù)庫

2009-06-17 09:59:46

Hibernate 連

2009-07-15 11:00:48

proxool連接池

2020-02-03 15:15:27

Druid連接池性能超出競品

2013-06-17 10:25:16

連接池Java

2009-12-25 15:38:12

ADO連接池

2009-06-24 07:53:47

Hibernate數(shù)據(jù)

2024-12-04 15:55:19

2022-07-19 13:51:47

數(shù)據(jù)庫Hikari連接池

2021-03-24 09:06:01

MySQL長連接短連接
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 午夜激情视频在线 | 久久久久久久久久久久一区二区 | 国产一区精品在线 | www久久国产| 欧美狠狠操 | 女人夜夜春 | xxxcom在线观看 | 欧美黄在线观看 | 最新毛片网站 | 超碰97免费在线 | 亚洲色在线视频 | www.色婷婷 | 亚洲综合无码一区二区 | av国产精品 | 久久久夜色精品亚洲 | 日本一本视频 | 国产男女视频网站 | www亚洲一区 | 在线观看视频91 | av在线一区二区三区 | 亚洲 自拍 另类 欧美 丝袜 | 狠狠干美女 | 久久精品一区二区三区四区 | 韩日在线观看视频 | 久久亚洲国产 | 99精品视频一区二区三区 | 精品日韩一区二区 | 午夜视频免费网站 | 国产精品一区二区不卡 | 国产精品久久久久久久久久免费看 | av影片在线 | 亚洲精品福利视频 | 综合精品 | 午夜精品一区二区三区在线视频 | 国产精品久久一区 | 国产欧美在线视频 | 亚洲美女一区二区三区 | 成人欧美一区二区三区在线播放 | 久久精品亚洲欧美日韩精品中文字幕 | 91精品国产自产精品男人的天堂 | 91精品中文字幕一区二区三区 |