- PR -

J2EEで既存DBテーブルを使う方法は?

1
投稿者投稿内容
matu
ベテラン
会議室デビュー日: 2002/09/01
投稿数: 95
お住まい・勤務地: 東京
投稿日時: 2002-11-03 19:31
 j2sdkee1.3.1付属のdeploytoolを使いEJBをdeployしているのですが、
なかなか思う様にマスターできません。ご存知であればご教授下さい。


・付属のdeploytoolでは既設のDBテーブルを利用できないのでしょうか?
 つまりdeploytoolのDBテーブル自動生成はできるのですが、既設のテー
 ブルはEJBにassignできないのでしょうか?インターネットを調べてみる
 とJBossやWebLogicなどでは可能であるとの内容を見つけましたが・・

・自動生成したテーブルはSQLを投げる時ダブルクオーテーションでテーブ
 ル名を囲わないと「テーブルが存在しません」といった結果が返されます。
 RDBMのシステムテーブルでテーブル名を確認してもダブルクオーテーショ
 ンは付いてません。これはどの様なカラクリなのでしょうか?RDBMの世界
 の話しでしょうか・・?

 
 どなたかご教授下さいm(__)m
amnaky
ベテラン
会議室デビュー日: 2002/09/13
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2002-11-04 12:22
一つ目の質問はわかりませんが、
ダブルクオーテーションの話は、テーブル名の大文字小文字の
区別をする、しないといった話じゃないでしょうか。

以前似たような現象を見たことがあります。
あるパッケージソフトが自動で作成したテーブルに対して
普通にSELECTするテーブルが存在しないと言われてしまう。

インストールスクリプトをよくみたら、CREATE TABLE文のテーブル名
にダブルクォーテーションがついていて、SELECT時にも同様に
ダブルクォーテーションをつけて大文字小文字を区別することを
DBMSに知らせないとないとだめというものです。

この辺はDBMSに依存する話かもしれません(サイベースはもともと
大文字小文字を区別するようになっていた気がする)ので、
DBMS名がわかるともうすこし何かわかるかもしれません。
matu
ベテラン
会議室デビュー日: 2002/09/01
投稿数: 95
お住まい・勤務地: 東京
投稿日時: 2002-11-04 14:09
ご返答ありがとうございます。


2つ目の件ですが、
確かにEJBの自動生成SQLの中のCREATE TABLEではテーブル名を
ダブルクォーテーションで囲ってあります。DBMS側の内部で何か
が起こっているという事ですよね?やはり決まりごととして理解
するのが適当でしょうか?

ちなみにDBMSはoracleでテストしてます。システムテーブル、
つまりuser_tablesテーブルのテーブル定義を見ても、特にその
ような(ダブルクォーテーションを意識するような)部分は無く、
普通にSQLPLUSでCREATEしたテーブルと全く変わりません。ちな
みに私はいつも大文字小文字を意識しないでSQLを打っていたので
すが、もしかしてダブルクォーテーションを付けるとoracleでも
大文字小文字を意識するのでしょうか・・?


p.s.1つ目の件は上手く伝わらなかったみたいですね・・
EntityBean EJBの開発方法としてボトムアップで開発する際に
DBMS側でデータベースを先に設計して構築し、その後でEJBを開発
という場合を想定しています。その際に先に開発したDBMS上のDB
に対してEJBをassignできないかな?という質問です。なかなか
上手く説明できなくて申し訳ございません。
amnaky
ベテラン
会議室デビュー日: 2002/09/13
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2002-11-04 22:25
そう思います。
http://rina.jpn.ph/~rance/om/oracle/hosoku06.html
上のサイトの「命名規則の例外」のところに少し言及されていました。
matu
ベテラン
会議室デビュー日: 2002/09/01
投稿数: 95
お住まい・勤務地: 東京
投稿日時: 2002-11-05 10:40
その様な規則があったとは・・
1つ目の件も同様に解決するかもしれません。
試してみます。
どうもありがとうございましたm(__)m
latte
常連さん
会議室デビュー日: 2002/11/07
投稿数: 38
投稿日時: 2002-11-07 13:23
こんにちは。
j2sdkee1.3.1ではなくJRun4での場合ですが、
最近JRun4用のServicePack1aが出ました。
それまでは、CMP2.0のEntityBeanでは、既存テーブルへのORマッピングはできず、
CMP1.1やBMP、SessionBeanなどを使用する必要がありました。
今回のSPで既存テーブルへのアクセスが可能になっています。

アプリケーションサーバによっては上記のようなことがあるみたいです。
_________________
1

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