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