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;//避免内存泄漏
        }
    }

}

 

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