2016-07-29 11 views
1

を呼び出します。そこで、私は接続オブジェクトを作成し、それをメソッドのチェーンに沿って渡して、接続オブジェクトを再利用します。複数の方法で接続を閉じるために、私は次のシナリオを持っている

接続プーリングは、ではありません。

ここで私の質問は
です.1つの接続を開いて再利用し、開始点で閉じる必要があります(上記の例では、接続はMethodAで開いて閉じます)。
または
それぞれのメソッドに対して別々の接続を作成する必要がありますか?

接続を再利用する方が良いようですが、次にコントロールがMethodA()に戻るまで接続を開いたままにしておく必要があります。

私は、作成するのが高価であるため、接続の再利用が優れていると読んでいます。しかし、私はまた、できるだけ早く、すなわち一度あなたがクエリ呼び出しを完了すると、接続を閉じる方が良いと読んでいます。

どちらのアプローチが優れているのですか?その理由は何ですか?

答えて

0

DBを照会しているだけで、更新または挿入していないようです。そうであれば、そのようなネストされたプロシージャ・コールでは多くのトランザクション・セマンティクスが回避されます。

これが当てはまる場合は、一度接続してすべてのクエリを実行し、接続を閉じるだけです。接続プールの使用率は、あなたの質問とはいくらか直交していますが、可能であれば、使用してください。彼らはあなたにコードを提供する前にプールが自動的に接続をテストするようにすることができるので、コードが大幅に単純化されます。接続が失われた場合、新しい接続が自動的に作成されます(DBがバウンスされたとしましょう)。

最後に、高価なためDB接続を作成する回数を最小限に抑えたいとします。しかし、これはしばしば重要ではありません。データベース自体は最大数の接続しかサポートしていません。多くのクライアントがある場合は、これを考慮する必要があります。簡単なケースがある場合 - データベースが1つで、プログラムが唯一の接続である場合は、接続を開き、プログラムの実行中は開いたままにしておきます。これを検証する必要があるので、DBプールのサイズを1にすると、それは回避されます。

関連する問題