7

有人愿意详细说明 HikariCP 如何处理池中的连接吗?您如何将新连接放入池中,以及稍后如何调用/检索它?

这是我当前的代码:

    HikariConfig config = new HikariConfig();
    config.setMaximumPoolSize(100);

    config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
    config.addDataSourceProperty("serverName", "localhost");
    config.addDataSourceProperty("port", "8889");
    config.addDataSourceProperty("databaseName", "XXX");
    config.addDataSourceProperty("user", "XXX");
    config.addDataSourceProperty("password", "XXX");

    System.out.print("qq");

    HikariDataSource ds = new HikariDataSource(config);
    ds.setConnectionTimeout(800);
4

1 回答 1

13

使用池,您无需将连接添加到池以稍后检索它。你做完全相反的事情:当你需要一个连接时,你从池中获得一个连接,并在你完成连接后关闭它以将其返回给池。顾名思义,HikariDataSource 是一个数据源。DataSource 是您从中获取连接的对象。

池为您处理连接的打开。如果没有自动可用的连接等,它会将您置于等待队列中。

根据池的属性,池可以立即或按需打开连接,始终打开给定数量的连接,在给定的未使用时间后缩小池大小等。

这一切都有很好的记录:https ://github.com/brettwooldridge/HikariCP#user-content-configuration-knobs-baby

示例代码(Java 7 及更高版本):

try (Connection connection = ds.getConnection()) {
    // use the connection
}

示例代码(Java 7 之前):

Connection connection = ds.getConnection();
try {
    // use the connection
}
finally {
    connection.close();
}
于 2014-10-06T19:16:25.833 回答