接続プールは、独自のラッパー実装でConnectionインスタンスとStatementインスタンスを装飾します。接続でcloseを呼び出すと、実際にはそれをプールに解放するだけです。プリペアドステートメントでcloseを呼び出すと、実際にはそれを接続のステートメントキャッシュに解放するだけです。ステートメントを準備するときは、接続からキャッシュされたステートメントインスタンスをフェッチしているだけかもしれません。これらはすべて非表示になっているため、心配する必要はありません。
クライアントに接続が与えられると、接続がプールに解放されるまで、他のクライアントが使用することはできなくなります。通常、接続は必要なときにフェッチし、使い終わったらすぐに返します。接続はプール内で開いたままになっているため、接続のフェッチと解放のオーバーヘッドはほとんどありません。
単一のJBDC接続と同じようにプールからの接続を使用し、接続やステートメントがリークしないように、リソースのクローズに関するベストプラクティスに従う必要があります。他のいくつかの回答のtry/catch/finallyの例を参照してください。
プールは、接続リソースを管理し、クライアントに配布する前にそれらをテストして、古くなっていないことを確認できます。また、プールは必要に応じて接続を作成および破棄します。