- PR -

スタンドアロンアプリケーションにおけるDB接続Connectionの保持

1
投稿者投稿内容
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2006-06-21 12:41
Javaを始めて、まだ5日間くらいの状態です。
なお、VB6とC#はそこそこ経験があります。

Webアプリケーションではなく、スタンドアロンアプリケーションの
前提で、以下の点について ご意見お聞かせください。
【動作前提条件】
Javaのバージョン= 1.4
DB =Postgres
アプリケーション =スタンドアロン(マルチスレッドなし)
アプリケーション動作時間と間隔=1日1回起動する。終了まで概ね2〜3分。
アプリケーション動作1回あたりのDB接続回数(SQL実行回数)=10回程度

【お伺いしたいこと】
スタンドアロンアプリの場合、VBなどでは、Connectionオブジェクトを
グローバル変数として持ち、データを取得したりした後も、Closeせず
アプリケーション終了時に閉じる実装パターンが多いかと思います。

JavaのWebアプリケーション等の場合、Jakarta Commons の
DBCPなどを使用して、当然プーリングすべきでしょう。
しかし、スタンドアロンアプリの場合、

Connectionをstatic変数として保持して、
Closeせず、アプリケーション終了時に最後に閉じるという
VBスタンドアプリ的なスタイルのコーディングはおかしいでしょうか。

色々なDB接続サンプルコードを見ると、必ず1ルーチン内で
必ずclose()しているので、
(勿論そうすべきですが・・)
スタンドアロン、あるいはクラサバの場合は保持してよいのか
判断に迷いました。

よろしくお願いします。

★なお上記においては、アプリケーション稼動中に
 予期せぬ事態で、Connectonをcloseしないまま、アプリケーションが異常終了
 することは、とりあえず無視できるとします(実際には無視できませんが)
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-06-21 13:46
専用ツールとして割り切るのであれば、全然問題ないと思います。

端末での手動実行とサーバサイドでの実行と両方で使いたいとか、
要件が変わったときに対応しにくくなりますが。

私なら、
1.業務ロジックに接続を渡して実行するクラス
2.接続を利用して業務ロジックを行うクラス
と分けて、1で2を実行した後に接続を解放します。
業務ロジック側では接続を解放しません。
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2006-06-21 18:09
かつのり様

回答ありがとうございました。

スタンドアロンっぽく(?)作ってみようと思います。
ありがとうございました。

1

スキルアップ/キャリアアップ(JOB@IT)