2017-06-30 5 views
-1

私はc3p0接続プールを見つけました接続のための新しいオブジェクトを作成するたびに5つの接続プールがあるとしたら、プールを使用した後にプールから接続を取得すると、新しいハッシュコードを次にどのように我々は接続プーリングと言うことができます..毎回プールは新しい接続を作成し、プールがどのように特定の接続が閉じていることを知るようになる??C3p0接続プール用API

答えて

2

接続プールから取得した接続は、通常は物理接続のラッパー(プロキシ)ですが、これもc3p0で使用される方法です。これは、実際の物理接続をユーザーから切り離すためのもので、クローズ操作を代行受信して接続をプールに戻すことができます。さらに、このラッパーは、閉じた接続として動作することにより、物理的な接続(およびアプリケーションの他の部分)を誤ったコードから保護します。競合状態やその他の奇妙な動作を診断するのが難しくなる可能性のある、コードを閉じた後も引き続き接続を使用しようとするコードでは、代わりに接続が閉じられたというエラーが発生します。

プールから得られる接続は毎回異なるIDを持つことが予想されます。これは毎回実際に新しい '論理的な接続'であるためです。プールから物理接続を再利用(ラップ)するだけです。

+0

これは、接続時にcolseメソッドが呼び出されるたびに、新しい接続がプールによって作成され、近い接続の場所を埋めることを意味します。 – user3497147

+0

@ user3497147いいえ。あなたのコードが(データベースへの物理的接続ではなく)ラッパーである接続上で 'close()'を呼び出すと、このラッパーは閉じた接続として動作し始めます。基礎となる物理接続は再利用のために接続プールに返されます。 –

+0

これらの物理的な接続はどこのプールにありますか? – user3497147