Druid連接池
在之前我分享過C3P0連接池這個工具類的用法以及具體的代碼,今天給大家介紹一款阿里提供的連接池,這也是以后我們常用的,畢竟現在這個連接池是全球公認的最出名,最好用的連接池工具類。
##一,Druid是一個JDBC組件,它包括三部分:
-
DruidDriver 代理Driver,能夠提供基於Filter-Chain模式的插件體系。
-
DruidDataSource 高效可管理的數據庫連接池。
-
SQLParser
##二,Druid可以做什么?
1) 可以監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,能夠詳細統計SQL的執行性能,這對於線上分析數據庫訪問性能有幫助。
2) 替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池。
3) 數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是不好的行為,容易導致安全問題。DruidDruiver和DruidDataSource都支持PasswordCallback。
4) SQL執行日志,Druid提供了不同的LogFilter,能夠支持Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的數據庫訪問情況。
擴展JDBC,如果你要對JDBC層有編程的需求,可以通過Druid提供的Filter-Chain機制,很方便編寫JDBC層的擴展插件。
##三,下面我們來說下如何使用:
##1,導包:
##2,定義配置文件,這個不同於C3P0連接池,我們只需要放到src目錄下,它就會直接識別,druid需要我們手動設置
* 優點:
1,是properties形式的。
2,可以叫任意名稱,可以放在任意目錄下。(我們一般還是習慣放在src下面)
##3,加載配置文件。Properties
##4,獲取數據連接池對象:通過工廠來獲取 DruidDataSourceFactory
##5,獲取連接:getConnection();
##6,下面我們來看下代碼:
package cn.liurui.web.druid; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JDBCUtils { //創建成員變量 private static DataSource ds; //加載配置文件 static { try { Properties pro = new Properties(); pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties")); //獲取dataSource連接池對象 DataSource dataSource = DruidDataSourceFactory.createDataSource(pro); } catch (IOException e) { e.printStackTrace(); } catch (Exception o){ o.printStackTrace(); } } /** * 獲取連接對象 */ public static Connection getConnection() throws SQLException { return ds.getConnection(); } /** * 釋放資源 */ public static void close(Statement stat,Connection conn){ close(null,stat,conn); } public static void close(ResultSet res,Statement stat,Connection conn){ if(res!=null){ try { res.close(); } catch (SQLException e) { e.printStackTrace(); } } if(stat!=null){ try { stat.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 獲取連接池 */ public static DataSource getDataSource(){ return ds; } }
Druid 的 JavaDoc 文檔請看: