- PR -

CMPで複合カラムによるPKの設定

1
投稿者投稿内容
ぬべたそ
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 72
投稿日時: 2004-12-22 12:12
こんにちは。
いつも参考にさせて頂いております。

JBoss3.2.6でEJBの独学を進めています。
複数のカラムからなるPKをテーブルに割り当てる必要ができてしまいました。
CMPを使う上で一般的にはどのようにするものなのでしょうか?
自分なりに考えてみると、、、
1.複合カラムからなるPKをCMPで実現する。
2.既存のカラムとは別にシーケンスIDのようなカラムを用意して、そちらをPKとする。
と2つ思い浮かびます。

他にも何か良い方法があるのでしょうか。
以上、よろしくお願いいたします。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2004-12-22 12:25
単純にPKクラスを作って、フィールドを複数にすれば
複合キーになりませんでしたっけ?

そういう話じゃない?

##追記##
ということで、1,2でいくと1が通常ですかね。
そのためのPKクラスですし。
テーブル上PKを分けるかどうするからはCMPとか
の話しじゃなくてDBの話しですしね。

[ メッセージ編集済み 編集者: (株)ぽち 編集日時 2004-12-22 12:36 ]
ぬべたそ
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 72
投稿日時: 2004-12-22 13:32
引用:

(株)ぽちさんの書き込み (2004-12-22 12:25) より:
単純にPKクラスを作って、フィールドを複数にすれば
複合キーになりませんでしたっけ?

そういう話じゃない?

##追記##
ということで、1,2でいくと1が通常ですかね。
そのためのPKクラスですし。
テーブル上PKを分けるかどうするからはCMPとか
の話しじゃなくてDBの話しですしね。



ご返信ありがとうございます。
一般的な手法が分からないため、大変参考になりました。
以前、多分Hibernateだったと思うのですが、ORマッピングツールを使おうとしたときに、複合のPKを扱うと機能が制限されるという記述を見かけました。
CMPでも複合のPKはできるだけ(データベースのテーブルも設計段階のような、柔軟に対応できる場合など)使わないのかと思い、質問させて頂きました。
1の路線で実装してみます。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2004-12-22 14:34
使う製品の依存はあるかもしれませんが
EJB(CMP)では複合キークラスも普通にいけますよ。
それすなわち、EJBをサポートしている製品は皆
通るでしょう。

ちなみにWebLogic7で複合キークラスにおける
CMPを作成・実行したことはあります。
le
会議室デビュー日: 2004/09/28
投稿数: 5
投稿日時: 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を使って生成
していますので、私自身では、複合プライマリキーを記述したことはありません。)

ぬべたそ
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 72
投稿日時: 2004-12-27 13:37
ぽちさん、leさん、ご返信ありがとうございます。
引用:

leさんの書き込み (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を使って生成
していますので、私自身では、複合プライマリキーを記述したことはありません。)


私もxdocletを使用しています。
xdocletによる複合プライマリーキーの作成方法を検索したのですが、見つからず、
xdocletのサンプルでも見つけきれませんでした。
xdocletによる複合プライマリーキークラスの作成方法をご教授いただけないでしょうか?
参考になるHPなどでも結構です。
よろしくお願い致します。
ぬべたそ
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 72
投稿日時: 2004-12-27 14:20
自己レスです。
引用:

私もxdocletを使用しています。
xdocletによる複合プライマリーキーの作成方法を検索したのですが、見つからず、
xdocletのサンプルでも見つけきれませんでした。
xdocletによる複合プライマリーキークラスの作成方法をご教授いただけないでしょうか?
参考になるHPなどでも結構です。
よろしくお願い致します。


EntityBeanのxdocletの記述で、複合PKにする複数のフィールドに対して"@ejb.pk-field"を指定することで、複合PKクラスを自動生成することが出来ました。
1

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