什么是數據庫連接池?
使用數據庫連接池的好處是減少了連接的創建和關閉的開銷,提高了數據庫訪問的性能和效率。
為什么我們要使用數據庫連接池?
我們使用數據庫連接池的主要原因是為了提高應用程序訪問數據庫的性能和效率。使用數據庫連接池的好處:
-
連接重用:連接池可以重復使用已經建立的連接,避免了頻繁地創建和關閉連接的開銷。這樣可以節省連接建立的時間和資源消耗。
-
連接管理:連接池可以自動管理連接的狀態和可用性。在應用程序使用連接之前,連接池會對連接進行驗證和修復,確保連接的有效性,從而提高應用程序對數據庫的可靠性。
-
連接的限制和控制:數據庫連接池可以控制同時打開的連接數,防止過多的連接造成數據庫的負擔。這樣可以避免數據庫連接過載導致性能下降。
-
連接的高可用性:連接池可以實時監控連接的可用性,并在連接出現問題時進行故障轉移和重試。這提高了應用程序對數據庫的可用性和容錯性。
-
提高數據庫的吞吐量:由于連接池可以有效地管理和重用連接,減少了連接的創建和銷毀開銷,從而提高了數據庫的吞吐量。
總之,使用數據庫連接池可以優化數據庫訪問的性能、提高應用程序的可靠性與可用性,并減輕數據庫負擔,是一種常用的數據庫連接管理技術。
?數據庫連接池的運行機制
(1) 程序初始化時創建連接池
(2) 使用時向連接池申請可用連接
(3) 使用完畢,將連接返還給連接池
(4) 程序退出時,斷開所有連接,并釋放資源
?配置Tomcat的conf/context.xml
在Context節點之間加入
<Resource name="jdbc/sys" ///名稱auth="Container" ///容器type="javax.sql.Datasource" ///類型maxActive="100" ///最大連接數maxIdle="30" ///最大空閑連接數maxwait="10000" ///最大的等待時間username="root" ///sql賬號password="123456" ///密碼driverClassName="com.mysql.cj.jdbc.Driver" ///加載url="jdbc:mysql://localhost:3306/" ///數據庫路徑
/>
使用JNDI獲取連接對象
*BaseDao*
public boolean getConnextion(){try{//初始化上下文Context cxt=new InitialContext();//連接池的上下文對象//獲取與邏輯相關的數據源對象Object obj=context.lookup("java:comp/env/jdbc/news");DataSource ds=(DataSource)obj;//向下轉型為數據源對象conn=ds.getConnection();return true;}catch(NamingException e){e.printStackTrace();return false;}catch(SQLExeption e){e.printStackTrace();return false;}
}
?