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 です。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 に答える