30.5. コンテナー管理リレーション


コンテナー管理リレーション (CMR: Container Managed Relationship) は、CMP 2.0 の力強い新機能です。プログラマーは EJB 1.0 導入時(当然、データベースも登場)からエンティティオブジェクト間のリレーションシップを作成していますが、CMP 2.0 以前は関連エンティティのプライマリキーを抽出するため各リレーションのコードを書き、擬似外部キーフィールドに格納しなければなりませんでした。シンプルなリレーションシップはコード化するのも簡単ですが、参照整合性のある複雑なリレーションシップはコード化作業に相当の時間が必要でした。CMP 2.0 があれば、手作業でリレーションをコード化する必要はなくなります。コンテナーは、参照整合性のある 1対1、1対多、または多対多のリレーションシップを管理できます。ただし、ローカルインターフェース間でしか定義できないのが唯一の制限事項です。つまり、同じアプリケーションサーバー内でもアプリケーションが異なる 2 つのエンティティではリレーションシップを作成できないのです。
コンテナー管理リレーションの作成には、基本的に 2 種類の方法があります。cmr-field 抽象アクセッサーを作成し、ejb-jar.xml ファイルでリレーションシップを宣言します。次の 2 つの項では、このステップを説明します。

30.5.1. CMR-Field 抽象アクセッサー

CMR-Field 抽象アクセッサーの署名は cmp-fieldsと同じですが、 ただし、値を1つ持つリレーションシップは、それに関連するエンティティのローカルインターフェースを返す必要があります。また、複数の値を持つリレーションシップは java.util.Collection(または java.util.Set) オブジェクトしか返すことができません。たとえば、organization と gangster の 1 対多のリレーションシップを宣言するには、 OrganizationBean クラスで organization から gangster への関係を宣言します。
public abstract class OrganizationBean
    implements EntityBean 
{
    public abstract Set getMemberGangsters();
    public abstract void setMemberGangsters(Set gangsters);
}
Copy to Clipboard Toggle word wrap
また gangster から organization へのリレーションシップを GangsterBean クラスで宣言することもできます。
public abstract class GangsterBean
    implements EntityBean 
{
    public abstract Organization getOrganization();
    public abstract void setOrganization(Organization org);
}
Copy to Clipboard Toggle word wrap
各 bean は CMR フィールドで宣言されますが、リレーションシップの 2 つの bean のうち一つにアクセッサーセットを設定してください。CMP フィールドは getter と setter いずれのメソッドも必要です。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat