1.沒有連接池的現狀
之前JDBC訪問數據庫的步驟: 創建數據庫連接 →運行SQL語句→關閉連接 每次數據庫訪問執行這樣重複的動作
每次創建數據庫連接的問題
-
獲取數據庫連接需要消耗比較多的資源,而每次操作都要重新獲取新的連接對象,執行一次操作就把連接關閉,而數據庫創建連接通常需要消耗相對較多的資源,創建時間也較長。這樣數據庫連接對象的使用率低。
-
假設網站一天10萬訪問量,數據庫服務器就需要創建10萬次連接,極大的浪費數據庫的資源,並且極易造成數據庫服務器內存溢出
2.連接池的概念: 連接池是創建和管理數據庫連接的緩衝池技術。連接池就是一個容器,連接池中保存了一些數據庫連接,這些連接是可以重複使用的。
3.連接池解決現狀問題的原理
-
程序一開始就創建一定數量的連接,放在一個容器中,這個容器稱爲連接池(相當於碗櫃/容器)。
-
使用的時候直接從連接池中取一個已經創建好的連接對象。
-
關閉的時候不是真正關閉連接,而是將連接對象再次放回到連接池中。
4.連接池好處
連接池中保存了一些數據庫連接,這些連接是可以重複使用的。節省數據庫的資源消耗。
5.常用連接池的介紹
javax.sql.DataSource
表示數據庫連接池,是JDK中提供的一個接口,沒有具體的實現,它的實現由連接池的數據庫廠商去實現。我們只需要學習這個工具如何使用即可。
public interface DataSource {
Connection getConnection();
}
常用的連接池實現組件有以下這些:
-
阿里巴巴-德魯伊Druid連接池:Druid是阿里巴巴開源平臺上的一個項目
-
C3P0是一個開源的JDBC連接池,目前使用它的開源項目有Hibernate,Spring等。
-
DBCP(DataBase Connection Pool)數據庫連接池,是Apache上的一個Java連接池項目,也是Tomcat使用的連接池組件。