Druid入门

Maven仓库地址

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.1.6</version>
</dependency>

手动获取连接

public class Driud {
    private static DruidDataSource druidDataSource = null;
    //在类加载时进行初始化
    static {
        Properties properties = new Properties();
        try {
            properties.load(Driud.class.getResourceAsStream("/druid.properties"));
            druidDataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        return druidDataSource.getConnection();
    }
}

配置信息

总体配置

name=test
driverClassName = com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=overdose
initialSize=5
maxActive=10
minIdle=3
maxWait=60000
removeAbandoned=true
removeAbandonedTimeout=180
timeBetweenEvictionRunsMillis=60000 
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=true
maxPoolPreparedStatementPerConnectionSize=50
filters=stat

单个配置

配置 缺省值 解释
name 当存在多个数据源时, 通过名字区分
url 连接数据库的Url <br/> mysql: jdbc:mysql://localhost:3306/test <br/> oracle : jdbc:oracle:thin:@localhost:1521:ocnauto
username 连接数据库的用户名
password 连接数据库的密码
driverClassName 根据url自动识别 可选的配置 druid会自动根据url选择对应的驱动
initialSize 0 初始化时创建连接的个数
maxActive 8 最大连接池数量
maxIdle 没用 详见Druid常见问题
minIdle 最小连接池数量
maxWait 获取连接时最大等待时间, 单位为毫秒, 缺省为公平锁 公平锁的简单介绍
poolPreparedStatements 是否缓存preparedStatement, 也就是PSCache
maxPoolPreparedStatementPerConnectionSize -1 每个连接上PSCache的大小
validationQuery 用来检测连接是否有效的sql,要求是一个查询语句。
testOnBorrow true 申请连接时执行validationQuery检测连接是否有效
testOnReturn false 归还连接时执行validationQuery检测连接是否有效
testWhileIdle false 建议配置为true,不影响性能,并且保证安全性 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
timeBetweenEvictionRunsMillis 间隔多久进行一次检测, 检测需要关闭的空闲连接, 单位为毫秒
minEvictableIdleTimeMillis 一个连接在池中最小生存的时间,单位是毫秒
connectionInitSqls 连接初始化的时候执行的sql
exceptionSorter 根据dbType自动识别 数据库抛出一些不可恢复的异常时,抛弃连接
filters 通过别名的方式配置扩展插件

连接池原理

连接池初始化时创建initialSize个连接, 取出连接时, 先判断有无空闲连接, 如果有空闲连接则返回, 否则再判断当前连接池是否等于maxActive, 如果等于maxActive, 则最多等待maxWait时间, 如果中途有连接被释放则返回, 否则抛出异常. 如果不等于maxActive则建立一个新连接. 连接使用完毕后, 并不将其关闭, 而是放回连接池, 等待下一次获取, 当连接池连接数目小于minIdle, 则自动补充连接


nwj_step
41 声望3 粉丝

暂时先写点东西吧


« 上一篇
各种锁