
こんばんは、こちらの皆様には大変お世話になっております。
早速ですがまた質問です^_^;
今MVCモデルを使って社員データをDBにいれる簡単なプログラムを作っているのですが、DB接続がうまくいきません。というよりも私の考え方で合っているのかが定かではないのですが…。
BeanのほうでDB接続のメソッドを作って、それをサーブレットで使おうと思っているのですが、Beanクラスのコンパイルができないんです。(画面表示担当のJSPから直接DBへ接続するぶんにはなんの問題もありません)
Beanにはいろんなメソッドを作るつもりで、DBへの指示のSQL文も一つ一つメソッド(データを追加したり、削除したり)を作るつもりでいます。
問題はメソッドの中でDB接続の処理をしてしまうと、別のメソッドでStatementオブジェクトが使えなくなってしまうことです。
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接続を書くことになるので、
No.1
- 回答日時:
コンパイルが通らないのが問題なのですか?
どのように作ったらわからないのが問題なのですか?
あとstatementが別メソッドで使えないとありますが、
使えないほうがよいのでは?
WebでDB接続するってことは1リクエストごとにstatementはクローズしますよね?
この回答への補足
お忙しい中の書き込み、ありがとうございます。
>コンパイルが通らないのが問題なのですか?
>どのように作ったらわからないのが問題なのですか?
最初はコンパイルが通らないのが問題だと思ったのですが、「待てよ。たんに私の作り方がおかしいだけなのか?」と思いなおし、どっちつかずの曖昧な質問になってしまいました。
正直なところ、どのように作ってよいのかわからないのです。
>WebでDB接続するってことは1リクエストごとにstatementはクローズしますよね?
昨日寝る時にいろいろ考えました。そして今chi-kon様の書き込みをみて半ば確信しかけているのですが、もしかしてBeanにてのDB接続(コネクションを使ったりの一通りの作業)ってメソッド一つ一つごとにしなくてはいけないのですが?
昨日私は「DB接続するメソッド」「DBをクローズするメソッド」「DBにStatementオブジェクトを使ってアクセスするメソッド」と作って、サーブレットのほうでそれらを呼び出そうと思っていたのですが(一つのDB処理をする場合、この三つのメソッドを呼び出す)、どうやらこの考えはおかしいようですね。
今日、メソッド一つ一つにDB接続の処理を書いてみます。
もしよければ、昨夜私が考えていたようなやりかたでDB接続は実現できるかどうなのか教えていただけますでしょうか?
今回はお忙しい中、ありがとうございました<(_ _)>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipse-Tomcatでのデバッグに...
-
エクセルVBAで、条件に一致する...
-
javascriptからjavaを呼び出したい
-
【sendkeysメソッドが動かずに...
-
引数で日付を2つ与え、その間の...
-
0歳児の指しゃぶりに関して
-
final修飾子を使っているのに、...
-
ウィンドウを最前面にできません
-
DataGridViewでセルクリックイ...
-
FEM解析の読み方は?
-
Labelコントロールに数字を代入...
-
ポストバック時のDatasourceバ...
-
エクセルVBAにおけるON TIMEメ...
-
VBAでSaveAs使用し、指定してい...
-
処理内容がほぼ同じメソッドの...
-
シリアル通信の方法(VB)
-
VBPをダブルクリックするとたま...
-
DBを扱う上でのclose()メソッド...
-
マスターページからコンテンツ...
-
for文(拡張)内の変数(ローカ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0歳児の指しゃぶりに関して
-
エクセルVBAで、条件に一致する...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
コマンドプロンプト実行後に画...
-
DataGridViewでセルクリックイ...
-
Labelコントロールに数字を代入...
-
final修飾子を使っているのに、...
-
ウィンドウを最前面にできません
-
配列のメソッド
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
メソッドをstaticにする、しな...
-
execute()
-
java 次の機能を有するメソッド...
-
PDFファイルから別ウィンドウで...
-
CALLされていないメソッドを見...
-
Excel : OpenTextメソッドが正...
-
C#で右からnカラム目に文字を挿...
-
eclipse-Tomcatでのデバッグに...
おすすめ情報