【问题标题】:How to create new connections and retrieve them later in HikariCP如何在 HikariCP 中创建新连接并稍后检索它们
【发布时间】:2014-10-06 19:09:33
【问题描述】:

有人愿意详细说明 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);

【问题讨论】:

    标签: java hikaricp


    【解决方案1】:

    使用池,您无需将连接添加到池中以便稍后检索它。你做的完全相反:当你需要一个连接时,你从池中获得一个连接,并在完成连接后关闭连接以将其返回给池。顾名思义,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();
    }
    

    【讨论】:

    • 谢谢。我已经实际阅读过,但我相信我需要一些代码才能完全理解它。你有任何示例代码显示它在使用中吗?
    • 您可以像使用任何其他数据源一样使用 HikariDataSource:在数据源上调用 getConnection() 以获取连接,然后使用此连接,然后在完成连接后调用 connection.close() .这是标准的 JDBC。
    • 好的,谢谢。所以即使你稍后使用连接,你应该写close(),然后再getConnection?
    • 调用getConnection()时池返回给你的连接不是物理数据库连接。它是实际物理连接的包装器(代理)。在此代理上调用 close() 不会关闭物理连接。它所做的只是返回与池的连接。
    • 啊,太好了!谢谢你的澄清。因此,如果我理解正确,对于每个 HikariDataSource,您实际上将连接信息存储在池中。通过调用 get connection Hikari “借用”了你的连接,当你 close() 你说你已经完成了它,然后它可以在其他地方使用。
    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 2020-05-27
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多