在我們程序中,訪問數據庫的時候,經常是這麼寫的,每訪問一次就要建立一次數據庫連接,存取數據,關閉連接。其實這種行為是非常耗費資源的。
為瞭改進這種現象,引入瞭連接池。
什麼是連接池呢?
通俗的講,連接池就是一個容器,服務器啟動的時候給你建立好連接,每次需要的時候,直接去容器中取,用完之後訪問容器中。
因此這種情況隻需開始new 連接池對象,而不像原來每次訪問數據庫,每次new connection對象。
可以用這個圖來表示一下:
現在java連接池有很多種。比如我們程序用的DBCP(Database Connection Pool)是一個依賴Jakarta commons-pool對象池機制的數據庫連接池,Tomcat的數據源使用的就是DBCP。 Proxool是一個Java SQL Driver驅動程序,提供瞭對你選擇的其他類型的驅動程序的連接池的封裝。BoneCp是一個開源的快速的JDBC連接池。DDConnectionBroker:是一個簡單,輕量級的數據庫連接池。
那使用連接池的流程是如何呢?
首先,new 數據庫連接池對象;
其次,按照連接池中的標簽值創建初始數量的空閑數據庫連接。
然後,當訪問數據庫請求時,直接從連接池中拿取一個連接。如果連接池中沒有空閑的連接,並且連接數沒有達到最大,則在容器中創建一個新的數據庫連接。
繼續, 對數據的操作。比如查詢數據什麼的。
然後, 操作完畢後,關閉數據庫,則把連接放回連接池中。(沒有真正釋放連接,而是放回容器中)
最後,釋放連接池對象。(真正的釋放連接)
其中連接池的操作流程跟上下文參數有關,比如最大連接數,空閑連接數,還有等待的時間等。
摘自 廊坊師范學院-梁煥月博客