Druid連接池的簡單介紹

講解

1.Druid是阿里巴巴開發的號稱爲監控而生的數據庫連接池,Druid是目前最好的數據庫連接池。在功能、性能、擴展性方面,都超過其他數據庫連接池,同時加入了日誌監控,可以很好的監控DB池連接和SQL的執行情況。Druid已經在阿里巴巴部署了超過600個應用,經過一年多生產環境大規模部署的嚴苛考驗。

Druid地址:https://github.com/alibaba/druid

DRUID連接池使用的jar包:druid-1.0.9.jar

2.Druid常用的配置參數解釋:

    jdbcUrl  連接數據庫的url

    username  數據庫的用戶名

    password  數據庫的密碼

    driverClassName  驅動類名。根據url自動識別,這一項可配可不配,如果不配置druid會根據url自動識別

    initialSize  剛創建好連接池的時候連接數量

    maxActive  連接池中最多可以放多少個連接

    maxWait  獲取連接時最大等待時間,單位毫秒

3.Druid(德魯伊)的使用步驟:

   1.下載jar,導包

       druid-1.0.9.jar

   2.複製配置文件到工程中 druid.properties

url=jdbc:mysql://localhost:3306/test
username=root
password=root
driverClassName=com.mysql.jdbc.Driver
initialSize=5
maxActive=10
maxWait=2000

   3.通過德魯伊的工具類的靜態方法獲取數據源

       DataSource DruidDataSourceFactory.createDataSource(Properties p)

/*未優化前的創建連接池的代碼實現:*/

public class DruitDemo {
    public static void main(String[] args) throws Exception {
        //3.通過德魯伊的工具類的靜態方法獲取數據源
        Properties properties = new Properties();
        properties.load(new FileInputStream("druid.properties"));
        //接口的多態
        DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);

        for (int i = 0; i < 11; i++) {
            Connection connection = dataSource.getConnection();
            System.out.println(i + "--" + connection);
            if(i == 5){
                connection.close();
            }
        }
    }
}

4.druid工具類的使用:

1.druid獲取步驟,封裝在工具類中,重複

2.數據源不用創建多個,只需要創建一個,將數據源定義成私有的靜態變量

3.druid數據源的賦值和配置文件的讀取只需要執行一次,所以代碼封裝到靜態代碼塊中

/*通過把連接池封裝在一個工具類中進行調用,優化*/

public class druidUtil {
    private static DataSource dataSource;
    static {
        try {
            Properties properties = new Properties();
            properties.load(new FileInputStream("druid.properties"));
            //接口的多態
            dataSource = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    //向外提供一個數據源
    public static DataSource getDataSource(){
        return dataSource;
    }


    //獲取連接
    public static Connection getConnection(){
        Connection connection = null;
        try {
            connection = dataSource.getConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return connection;
    }
    //資源釋放
    public static void release(ResultSet resultSet, Statement statement, Connection connection) {

        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            resultSet = null;//避免內存泄漏
        }

        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            statement = null;//避免內存泄漏
        }


        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            connection = null;//避免內存泄漏
        }
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章