- ベストアンサー
ResultSetのクローズについて
下記のURLの質問で、アクションクラスと、DB接続クラスは分けるのが普通だということは分かりましたが、 そうなると、ResultSetとか、Connectionとかのクローズのタイミングが、いまいち分かりません。 イメージ的には、そのDB接続クラス内でクローズするのが正しいとは思うのですが・・・。 でも、そうすると、取得した結果を呼び出したアクションクラスに渡せない・・・。 どうすれば、いいのでしょうか? http://okwave.jp/qa/q6345240.html
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 下記のURLの質問で、アクションクラスと、DB接続クラスは分けるのが普通だということは分かりましたが、 分けるのが「普通」ではありません。ありふれてはいるかもしれませんが。 URLの質問に対する回答をよく読んで下さい。要は作り方次第です。プログラムに要求されていることを満たすために、ActionクラスにDB接続メソッドを実装することもあり得ます。 繰り返しますが「要求に応じた処理をどう実装するかは、あくまで作り手が決めること」です。これを念頭に置いて下さい。 さて本題ですが、以下のような手順で実現できます。 (1)データ格納用のクラスを作成 (2)DB接続クラスでDBに接続、データを取得 & 1のクラスから生成したオブジェクトに値を保存 (3)DB接続クラスでCLOSE処理 & 2で生成した(DBから取ったデータを保存してある)オブジェクトをアクションクラスに返す これならDBをCLOSEした後もオブジェクトに値が残り、アクションクラスでそのオブジェクトの値を取得することができます。 (1)のクラスには、値を保存するフィールドとSetterやGetterなどのアクセサメソッドを実装していれば最低限使用には耐えるでしょう。ベタな書き方でいいなら、java.util.Listやjava.util.Mapなどのクラスを使えばよいでしょう。 蛇足ながら、「アクションクラス」ということはStrutsを使っていると推測します。もしそうなら回答を求めやすいようにStrutsを使っている旨を明記すべきです。そしてJavaはStrutsだけが全てではありません。 この手の、オブジェクトについての考え方はJavaやC#どちらにも通ずるものです。もう少し基礎をしっかり勉強されることをお勧めします。
お礼
ご指摘ありがとうございます。 とりあえず、クラスを分けるようにしてどうにかできそうです。 どっちにしろ、まずは、基礎が必要ですね。 基礎を勉強します。