2011-07-03 15 views
3

データベースの操作ごとにデータベース接続を開き、それに応じて を閉じるか、開始時に接続を開いて、複数の操作で同じ開かれた接続を呼び出して閉じます活動が行われます。 ?効率的な方法で複数のデータベース接続を使用する

メインフレームがあり、カードレイアウトを使用するJava Swingアプリケーションを作成しています。私は別のパネルを選択しています。このパネルのそれぞれは、実行するデータベース操作が異なります。現在、私は個々の接続をパネルごとに開いているので、メインアプリケーションを開くと、複数の接続が開いたり閉じたりします。

私は正しいことをしていることを確認したいし、パフォーマンスに悪い練習とボトルネックを避けるため、私はJava Expertにこの質問をしています。

ご協力ありがとうございます。

+1

kdev:あなたのことは良い質問だと思います。私はその反応に興味を持っていて、それを高く評価しました。フレンドリーな思い出として、あなたの古いスレッドに戻って、より多くの回答を受け入れることができます。これは、今後の質問であなたを助けるために多くの動機を与えるかもしれません。あなたのコーディングとこの質問への良い答えを得ることと運の良さ。私もそれから学ぶことを願っています! :) –

答えて

6

いいえ、データベース接続ごとに新しい接続を作成することはお勧めしません。接続の作成は、通常は高価です。接続のオープンとクローズのセマンティクスを抽象化する接続プールを使用してみてください。こうすることで、アプリケーションはConnection#closeなどと呼ぶことができ、プールの後ろではプールが取得し、それに応じて接続への接続が返されます。そこには多くの解決策があります。 DBCP、C3P0またはBoneCP。

+0

T. Sharma、ここにお会いできてよかったです。+1 – mKorbel

1

接続プールがある場合は、必ず各操作ごとに接続を使用できます。接続を作成するのは高価ですが、すべての操作をプールしてコストを償却することは可能です。

可能な限り最小限の範囲で、すべての操作で接続を取得して使用し、プールに戻す必要があります。

+0

素晴らしい答え(1+)ありがとうございました!私はチュートリアルのために接続プーリングについてもっと知りたいと思っていて、OPとのまともなリンクのように見えるかどうか気にしないことを願っています:[SDNチュートリアル:接続プーリング](http://java.sun.com/developer /onlineTraining/Programming/JDCBook/conpool.html) –

0

データベースへの接続は、比較的高価な操作です。通常は、接続プールを使用します。接続プールには、使用可能なデータベース接続の集合が保持されます。プールから接続を取得し、その接続を介してクエリを実行し、プールに戻します(通常これは接続を閉じることによって行われます)。接続プールはバックグラウンドでデータベースに新しい接続を行うため、接続が必要なときに待つ時間を費やす必要はありません。

関連する問題