11.數(shù)據連接池

數(shù)據連接池的原理就是解決多次連接數(shù)據庫的性能損耗,建立一個pool,用來存儲數(shù)據庫連接,需要的時候直接從連接池獲取,而不需要再次和數(shù)據庫建立連接。
目前常用的數(shù)據連接池(簡稱數(shù)據源)有以下幾種:

  • DBCP
  • DBCP2
  • C3P0(有性能問題,不建議用)
  • Druid(阿里數(shù)據源,推薦使用)
  • Tomcat自帶連接池
  • WebLogic數(shù)據源
    這里面我目前常用的是Druid,性能不錯,而且自帶監(jiān)控功能,可以和Spring完整整合,監(jiān)控sql執(zhí)行性能,監(jiān)控service的執(zhí)行效率。
    下面寫一個方法來使用數(shù)據連接池,代碼參見:com.critc.DataSourceTest

首先需要在pom.xml添加druid依賴

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.25</version>
        </dependency>

代碼如下:

public class DataSourceTest {
    public static void main(String[] args)throws  Exception {
        Hashtable<String, String> map = new Hashtable<String, String>();
        map.put("driverClassName", "com.mysql.jdbc.Driver");
        map.put("url", "jdbc:mysql://127.0.0.1/test");
        map.put("username", "root");
        map.put("password", "root");
        map.put("initialSize", "2");
        map.put("maxActive", "10");
        DataSource dataSource = DruidDataSourceFactory.createDataSource(map);
        long l = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            Connection conn = dataSource.getConnection();
            conn.close();
        }
        System.out.println("連接池執(zhí)行時間:" + (System.currentTimeMillis() - l));

        long l2 = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            Connection conn = new JdbcTest().getConn();
            conn.close();
        }
        System.out.println("JDBC連接執(zhí)行時間:" + (System.currentTimeMillis() - l2));
    }
}

可以看出使用連接池獲取數(shù)據庫連接的時間遠遠小于直接連接數(shù)據庫。

源碼下載

本例子詳細源碼

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容