こんばんは、こちらの皆様には大変お世話になっております。
早速ですがまた質問です^_^;
今MVCモデルを使って社員データをDBにいれる簡単なプログラムを作っているのですが、DB接続がうまくいきません。というよりも私の考え方で合っているのかが定かではないのですが…。
BeanのほうでDB接続のメソッドを作って、それをサーブレットで使おうと思っているのですが、Beanクラスのコンパイルができないんです。(画面表示担当のJSPから直接DBへ接続するぶんにはなんの問題もありません)
Beanにはいろんなメソッドを作るつもりで、DBへの指示のSQL文も一つ一つメソッド(データを追加したり、削除したり)を作るつもりでいます。
問題はメソッドの中でDB接続の処理をしてしまうと、別のメソッドでStatementオブジェクトが使えなくなってしまうことです。
DB接続のメソッドは戻り値も引数もなく、DBへ指示を出すメソッドはその時々に合ったものにしようと考えています。この引数をうまく使うのかなぁ、と思いつつも良い案が浮かびません。それとも根本的に考え方が間違っているのでしょうか?
皆様お忙しいとは思いますがご教示のほど、宜しくお願いいたします<(_ _)>
No.1
- 回答日時:
コンパイルが通らないのが問題なのですか?
どのように作ったらわからないのが問題なのですか?
あとstatementが別メソッドで使えないとありますが、
使えないほうがよいのでは?
WebでDB接続するってことは1リクエストごとにstatementはクローズしますよね?
この回答への補足
お忙しい中の書き込み、ありがとうございます。
>コンパイルが通らないのが問題なのですか?
>どのように作ったらわからないのが問題なのですか?
最初はコンパイルが通らないのが問題だと思ったのですが、「待てよ。たんに私の作り方がおかしいだけなのか?」と思いなおし、どっちつかずの曖昧な質問になってしまいました。
正直なところ、どのように作ってよいのかわからないのです。
>WebでDB接続するってことは1リクエストごとにstatementはクローズしますよね?
昨日寝る時にいろいろ考えました。そして今chi-kon様の書き込みをみて半ば確信しかけているのですが、もしかしてBeanにてのDB接続(コネクションを使ったりの一通りの作業)ってメソッド一つ一つごとにしなくてはいけないのですが?
昨日私は「DB接続するメソッド」「DBをクローズするメソッド」「DBにStatementオブジェクトを使ってアクセスするメソッド」と作って、サーブレットのほうでそれらを呼び出そうと思っていたのですが(一つのDB処理をする場合、この三つのメソッドを呼び出す)、どうやらこの考えはおかしいようですね。
今日、メソッド一つ一つにDB接続の処理を書いてみます。
もしよければ、昨夜私が考えていたようなやりかたでDB接続は実現できるかどうなのか教えていただけますでしょうか?
今回はお忙しい中、ありがとうございました<(_ _)>
No.2ベストアンサー
- 回答日時:
>今MVCモデルを使って社員データをDBにいれる簡単なプログラムを作っている
という文面を伺う限り、ControllerであるサーブレットがJDBC接続を呼び出すよりは、
ModelであるJavaBeansにJDBCをカプセルしたほうが良いと思います。
理由は、MVCアーキテクチャが生まれた背景にあります。なぜMVCにするのか、考えて見てください。
例えば、JavaBeansを以下のようにします。
public class EmployeeModel {
private String id;
private String name;
// アクセサ省略
public void create(){
Connection conn = ・・・
・・・
}
}
という感じです。
Servletは、
メソッド毎にConnection接続を書くことになるので、接続に関する操作をまとめたクラスを一つ作っておくと便利です。
具体的なソースを載せて、
・こう書いたのだけど、コンパイルが通らない。どうして?orどうすれば良いか?
みたいな問いかけをすれば、具体的なアドバイスも集まると思いますよ。
今回はお忙しい中、ありがとうございました。
>メソッド毎にConnection接続を書くことになるので、接続に関する操作をまとめたクラスを一つ作っておくと便利です。
なるほど。
クラス設計は全然できないので、勉強になりました。
プログラムは最近始めたんですけど奥が深いですね…。
>具体的なソースを載せて、
・こう書いたのだけど、コンパイルが通らない。どうして?orどうすれば良いか?
みたいな問いかけをすれば、具体的なアドバイスも集まると思いますよ。
すみません、あんまり具体的じゃない質問で^_^; 次回はソースを載せて、もっと具体的に質問したいと思います。
アドバイス、ありがとうございます。
今回はお忙しい中ご教示くださり、ありがとうございました<(_ _)>
No.3
- 回答日時:
#2です。
以下訂正です。すみません。
(誤)
Servletは、
メソッド毎にConnection接続を書くことになるので、
(正)
JavaBeansは、
メソッド毎にConnection接続を書くことになるので、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
コマンドプロンプト実行後に画...
-
【sendkeysメソッドが動かずに...
-
オートシェイプの位置がずれる...
-
AdapterView<?> parent この部...
-
VB.NET デリゲートへのコールバ...
-
サーブレット DBにある生年月...
-
Excel VBAにて
-
掲示板で、テキストフィールド...
-
boolean型のフィールドとゲッタ...
-
エクセルVBAにおけるON TIMEメ...
-
struts使用時のメソッド
-
VB.netで、シリアル通信のタイ...
-
オーバーロードの「あいまい」...
-
シンボルを解決できません。 ...
-
canvasに描画したものを全て削...
-
VB.NET/256色でのBMPファイル保存
-
タブコントロールの問題 (VB)
-
計算プログラムでの平方根の求め方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
Labelコントロールに数字を代入...
-
final修飾子を使っているのに、...
-
エクセルVBAにおけるON TIMEメ...
-
コマンドプロンプト実行後に画...
-
mainメソッドのthrows節で設定...
-
DataGridViewでセルクリックイ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
onClickで関数呼出し後に、結果...
-
ExcelのxlDialogInsertPictureで。
-
Refreshメソッドの使い方
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
ウィンドウを最前面にできません
-
(String args[])というメッソ...
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA シェイプの原型のサ...
-
VB.netで、シリアル通信のタイ...
-
boolean型のフィールドとゲッタ...
おすすめ情報