- - PR -
CMPで複合カラムによるPKの設定
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-12-22 12:12
こんにちは。
いつも参考にさせて頂いております。 JBoss3.2.6でEJBの独学を進めています。 複数のカラムからなるPKをテーブルに割り当てる必要ができてしまいました。 CMPを使う上で一般的にはどのようにするものなのでしょうか? 自分なりに考えてみると、、、 1.複合カラムからなるPKをCMPで実現する。 2.既存のカラムとは別にシーケンスIDのようなカラムを用意して、そちらをPKとする。 と2つ思い浮かびます。 他にも何か良い方法があるのでしょうか。 以上、よろしくお願いいたします。 | ||||
|
投稿日時: 2004-12-22 12:25
単純にPKクラスを作って、フィールドを複数にすれば
複合キーになりませんでしたっけ? そういう話じゃない? ##追記## ということで、1,2でいくと1が通常ですかね。 そのためのPKクラスですし。 テーブル上PKを分けるかどうするからはCMPとか の話しじゃなくてDBの話しですしね。 [ メッセージ編集済み 編集者: (株)ぽち 編集日時 2004-12-22 12:36 ] | ||||
|
投稿日時: 2004-12-22 13:32
ご返信ありがとうございます。 一般的な手法が分からないため、大変参考になりました。 以前、多分Hibernateだったと思うのですが、ORマッピングツールを使おうとしたときに、複合のPKを扱うと機能が制限されるという記述を見かけました。 CMPでも複合のPKはできるだけ(データベースのテーブルも設計段階のような、柔軟に対応できる場合など)使わないのかと思い、質問させて頂きました。 1の路線で実装してみます。 | ||||
|
投稿日時: 2004-12-22 14:34
使う製品の依存はあるかもしれませんが
EJB(CMP)では複合キークラスも普通にいけますよ。 それすなわち、EJBをサポートしている製品は皆 通るでしょう。 ちなみにWebLogic7で複合キークラスにおける CMPを作成・実行したことはあります。 | ||||
|
投稿日時: 2004-12-23 09:44
JBoss4.0.0で複合プライマリキーを使っています。
以前3.2.5でも使用していた記憶がありますので、恐らくJBoss3.2.6なら問題無く使えると思います。 なお、複合プライマリキークラスの実装には 1.java.io.Serializable を実装したクラスであること 2.プライマリキーを示すフィールドはpublicとなっていること 3.フィールド名、型はCMPと一致していること 4.equals, hashCode メソッドを実装すること といった条件がありますので、ご注意下さい。 (なお、複合プライマリキークラスが必要な場合は、xdocletを使って生成 していますので、私自身では、複合プライマリキーを記述したことはありません。) | ||||
|
投稿日時: 2004-12-27 13:37
ぽちさん、leさん、ご返信ありがとうございます。
私もxdocletを使用しています。 xdocletによる複合プライマリーキーの作成方法を検索したのですが、見つからず、 xdocletのサンプルでも見つけきれませんでした。 xdocletによる複合プライマリーキークラスの作成方法をご教授いただけないでしょうか? 参考になるHPなどでも結構です。 よろしくお願い致します。 | ||||
|
投稿日時: 2004-12-27 14:20
自己レスです。
EntityBeanのxdocletの記述で、複合PKにする複数のフィールドに対して"@ejb.pk-field"を指定することで、複合PKクラスを自動生成することが出来ました。 |
1