11

BoneCP の使用を開始したばかりで、著者のサイトからサンプル JDBC コードを取得しました。

接続を返す getConnection() という関数があります。ここにスニペットがあります。

    // setup the connection pool
BoneCPConfig config = new BoneCPConfig();
// Config goes here.
connectionPool = new BoneCP(config); // setup the connection pool

return connectionPool.getConnection(); // fetch a connection

さて、私の質問: 1) 上記の関数から返された接続の使用が終了したら、connection.close() を呼び出してプールに返されますか、それとも接続を完全に閉じますか? 接続をプールに戻すにはどうすればよいですか?

2) アプリケーションの終了時にプールをクリーンアップする方法は? 終了時に connectionPool.shutdown() を呼び出す必要がありますか? また、プールされたすべての接続を個別に閉じる必要があることをどこかで読みましたか? これは本当ですか?

ありがとう。

4

2 に答える 2

19

1.接続が完了したら、常に呼び出しconnection.close()て接続をプールに戻します(物理的に閉じられることはありません)。

2.connectionPool.shutDown()プールの使用が完全に終了し、再接続する予定がない場合は、電話してください。

于 2012-02-17T13:16:03.413 に答える
2
 Connection connection = dbPool.getConnection();

プールから取得した Connection オブジェクトはラッパー クラスです。Exceptionであっても、基になる接続を適切に維持します。

接続関連の例外 ( TERMINATE_ALL_CONNECTIONSなど) でも、BoneCP プールは基礎となるすべての接続を適切に閉じます。

要約すると、BoneCP プールはキャッシュを透過的にします。クライアント側はスタンドフローに従うだけでよく、

  1. 接続を要求します (プールから接続を取得します。プールは接続を再利用/作成するかどうかを決定します)
  2. PreparedStatement/CallableStatement を要求します (有効な場合はプールからオブジェクトを再利用します)
  3. ステートメントを実行する
  4. close ステートメント (有効になっている場合は、ステートメント オブジェクトをプールに解放します)
  5. 接続を閉じる (接続オブジェクトをプールに解放する)

アプリケーションが停止したら、プールをシャットダウンして、キャッシュされたすべての接続を解放します。

boneCP.shutdown()
于 2013-09-28T04:55:09.230 に答える