接続プールを使用する場合、最後に接続を閉じる必要がありますか?もしそうなら、プーリングの目的は失われていませんか?そうでない場合、データソースは、Connectionの特定のインスタンスが解放され、再利用できることをどのように知るのでしょうか。私はこれについて少し混乱しています、どんなポインタもありがたいです。
はい、確かにプールされた接続も閉じる必要があります。これは、実際には実際の接続のラッパーです。それはカバーの下で実際の接続をプールに解放します。実際の接続が実際に行われるかどうかを決定するのは、さらにプール次第です。 閉じられるか、新しいgetConnection()
に再利用されます 電話。したがって、接続プールを使用しているかどうかに関係なく、常に finally
ですべてのJDBCリソースを逆の順序で閉じます try
のブロック それらを取得した場所をブロックします。 Java 7では、 try-with-resources
ステートメント。
次の方法は標準に近いものですか?プールから接続を取得しようとしているように見えます。データソースを確立できない場合は、昔ながらのDriverManagerを使用してください。実行時にどの部分が実行されているのかさえわかりません。上記の質問を繰り返しますが、そのような方法から出てくる接続を閉じる必要がありますか?
例はかなり怖いです。 DataSource
を検索/初期化する必要があります アプリケーション全体のDB構成クラスのコンストラクター/初期化でのアプリケーションの起動中に1回だけ。次に、getConnection()
を呼び出すだけです。 アプリケーションの残りの存続期間を通じて、1つの同じデータソースで。同期やヌルチェックは必要ありません。