1、鏈接池介紹java
一次性建立多個鏈接,將多個鏈接緩存在內存中,造成數據庫鏈接池,若是應用程序須要操做數據庫,只須要從鏈接池中獲取一個鏈接,使用後,並不須要關閉鏈接,只須要將鏈接放回到鏈接池中。sql
鏈接池的好處:節省建立鏈接與釋放鏈接,鏈接池中鏈接起到複用的做用,提升程序性能。數據庫
2、自定義鏈接池緩存
編寫鏈接池須要實現javax.sql.DataSource接口。DataSource接口中定義了兩個重載的方法。ide
public Connection getConnection() throws SQLException
publicConnection getConnection(String username,String password) throws SQLException
實現DataSource接口,並實現鏈接池功能的步驟:性能
在DataSource構造方法中批量建立於數據庫的鏈接,並把建立的鏈接保存到一個集合對象之中。對象
實現getConnection()方法,讓getConnection()方法每次調用時,從集合對象中取出一個Connection對象返回給用戶。接口
當用戶使用完Connection,調用conn.close()方法時,Connection對象應該保證將本身返回到鏈接池的集合對象中,而不該該把conn還給數據庫。內存
自定義鏈接池注意問題:get
儘可能不要使用具體對象類型的引用。
使用自定義方法close()將鏈接放回到鏈接池,須要用戶在使用的時候調用額外的API,即讓用戶定義鏈接池的時候,DataSource dataSource = new MyDataSource();在用戶使用鏈接後,應該調用conn.close()完成將鏈接放回到鏈接池。
3、主流開源鏈接池
DBCP鏈接池和c3p0鏈接池