阿里数据库连接池 druid 配置详解

1.1Druid概念

  • Druid(德鲁伊)是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid地址:https://github.com/alibaba/druid 
  • DRUID连接池使用的jar包:druid-1.0.9.jar

druid-1.0.9.jar百度网盘下载链接:https://pan.baidu.com/s/1yV3OD7mgDHcUjzvq5ghKiA 密码:bfwn 

 1.2 DRUID常用的参数配置

参数 说明
jdbcUrl 连接数据库的url:mysql : jdbc:mysql://localhost:3306/druid2
username 数据库的用户名
password 数据库的密码
driverClassName 驱动类名。根据url自动识别,这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName(建议配置下)
initialSize 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 
maxActive 最大连接池数量
maxIdle 最大的空闲连接个数, 已经不再使用,配置了也没效果,默认值是8
minIdle 最小连接池数量,
maxWait 获取连接时最大等待时间,单位毫秒。

2.1 使用的步骤

  1. 添加jar包。druid-0.9.jar
  2. 编写Properties配置文件,存储到src或者其他目录下。
  3. 创建druid的连接池
package druid;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.util.Properties;
/*DRUID的核心类:
        DruidDataSourceFactory 数据源工厂。去得到一个连接池
        DruidDataSourceFactory.createDataSource(properties);通过工厂得到一个连接池对象*/
public class DruidDemo {
    public static void main(String[] args)  throws Exception{
       Properties properties = new Properties();
       /*
         让该properties加载druid.properties文件。
         使用类文件路径去src目录下的资源找是最方便的,如果需要使用类文件路径那么必须要先得到一个class对象才能使用
         类文件路径,类文件路径一定需要以“/”开头,代表了src目录。
        */
        //该方法返回的是一个资源文件的输入流
        InputStream inputStream = DruidDemo.class.getResourceAsStream("/druid.properties");

        properties.load(inputStream);
        //得到一个连接池
        DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);

        System.out.println("连接:"+dataSource.getConnection());
        System.out.println("连接:"+dataSource.getConnection());
        System.out.println("连接:"+dataSource.getConnection());
        System.out.println("连接:"+dataSource.getConnection());
        System.out.println("连接:"+dataSource.getConnection());
        System.out.println("连接:"+dataSource.getConnection());
        System.out.println("连接:"+dataSource.getConnection());
        System.out.println("连接:"+dataSource.getConnection());
        System.out.println("连接:"+dataSource.getConnection());
        System.out.println("连接:"+dataSource.getConnection());
    }
}
  • JDBC工具类定义: 
package Utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.*;
import java.util.Collection;
import java.util.Properties;

/*
    工具类
 */
public class JDBCUtils {

    private static DataSource dataSource;

    //加载配置文件只需要加载一次,而静态代码块也是只加载一次的,所以将加载配置文件的代码放在静态代码块中
    static {
        try {
            //Properties加载配置文件
            Properties properties = new Properties();

            InputStream inputStream = JDBCUtils.class.getResourceAsStream("/druid.properties");

            properties.load(inputStream);

            //创建druid的连接池
            dataSource= DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    //获取连接池
    public static DataSource getDataSource(){
        return dataSource;
    }
    
    //获取连接
    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

    //关闭资源
    public static void close(ResultSet rs, Statement  st,Connection conn){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(st!=null){
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

 

你可能感兴趣的:(JDBC)