德鲁伊连接数据库
和JDBC是一样的,最核心的任务就是将driver,url,password,user给设置好
德鲁伊和JDBC不同的点在于:
德鲁伊中使用close方法,不是关闭连接,而是将连接归还到连接池中,而JDBC是真的把连接关闭
public class DruidDBSUtil {
private static DruidDataSource druidDataSource;
static {
// 创建连接池
druidDataSource = new DruidDataSource();
// 设置驱动全类名
druidDataSource.setDriverClassName(Constant.PHOENIX_DRIVER);
// 设置连接 url
druidDataSource.setUrl(Constant.PHOENIX_URL);
// 设置初始化连接池时池中连接的数量
druidDataSource.setInitialSize(5);
// 设置同时活跃的最大连接数
druidDataSource.setMaxActive(300);
// 设置空闲时的最小连接数,必须介于 0 和最大连接数之间,默认为 0
druidDataSource.setMinIdle(1);
// 设置没有空余连接时的等待时间,超时抛出异常,-1 表示一直等待
druidDataSource.setMaxWait(-1);
// 验证连接是否可用使用的 SQL 语句
druidDataSource.setValidationQuery("select 1");
// 指明连接是否被空闲连接回收器(如果有)进行检验,如果检测失败,则连接将被从池中去除
// 注意,默认值为 true,如果没有设置 validationQuery,则报错
// testWhileIdle is true, validationQuery not set
druidDataSource.setTestWhileIdle(true);
// 借出连接时,是否测试,设置为 true,不测试可能连接无法使用
druidDataSource.setTestOnBorrow(true);
// 归还连接时,是否测试
druidDataSource.setTestOnReturn(false);
// 设置空闲连接回收器每隔 30s 运行一次
druidDataSource.setTimeBetweenEvictionRunsMillis(30 * 1000L);
// 设置池中连接空闲 30min 被回收,默认值即为 30 min
druidDataSource.setMinEvictableIdleTimeMillis(30 * 60 * 1000L);
}
public static Connection getPhoenixConn() throws SQLException {
return druidDataSource.getConnection();
}
}