EJB 関係

EJB ツールでは、EJB デプロイメント 記述子エディターを使用して、異なるエンタープライズ Bean 間の関係を、 オプションで定義することができます。
重要: EJB 1.x 関係は WebSphere® 拡張機能であり、EJB 2.x 関係は EJB 2.x デプロイメント記述子の一部です。 これらの 2 つのレベルの関係について、異なるロケーションで異なるウィザードを開きます。

関係には、以下の 3 つの主要な型があります。

1 対 1 (1:1) の関係では、CMP エンティティー Bean は、別の CMP エンティティー Bean の単一インスタンスに関連付けられます。 例えば、Employee Bean は、EmployeeID Bean の単一インスタンスだけにしか関連付けられません。 それは、1 人の従業員 (Employee) は、ファイル上に 1 つの従業員 ID (Employee ID) しか持つことができないためです。

1 対多 (1:M) の関係では、CMP エンティティー Bean は、別の CMP エンティティー Bean の複数インスタンスに関連付けられます。 例えば、Department Bean は、Employee Bean の複数インスタンスに関連付けられます。 それは、ほとんどの部署 (Department) は複数の従業員 (Employee) で構成されているためです。

多対多 (M:M) の関係では、CMP エンティティー Bean の複数インスタンスは、 別の CMP エンティティー Bean の複数インスタンスに関連付けられます。 例えば、Customer Bean の複数インスタンスは、Restaurant Bean の複数インスタンスに関連付けられます。 レストラン (Restaurant) は、多くの顧客 (Customer) にサービスを提供し、 顧客は多くの異なるレストランの常連であるためです。 EJB 1.1 CMP エンティティー Bean の場合、多対多の関係にはリンク Bean を使用する必要があります。 2 つのエンタープライズ Bean の中央部に配置されたリンク Bean は、それぞれのリンク Bean に対して 1:M の関係を持ちます。 EJB 2.0 CMP Bean の場合、トップダウン・マッピングの実行中に、自動的にリンク・テーブルの作成が行われるため、 リンク Bean の作成は必要ありません。

関係を定義する際には、他の Bean と関連してそれぞれの Bean に役割 を割り当て、 その役割に名前を付けます。例えば、Employee と EmployeeID との間に関係を作成するとします。Employee Bean 内の EmployeeID の役割は、id または employeeID などの分かりやすいものにします。 EmployeeID Bean 内の Employee の役割は、従業員所有者 などにします。 これらの名前は、生成されたコードでメソッド名を派生させるために使用され、 エンタープライズ Bean のリモート・インターフェースの一部になります。

EJB 2.x の関係の場合、CMR フィールド要素がメソッドの生成に使用されます。

CMP フィールドと関係が最終的にデータベース表にマップされると、 データベース表の関係が外部キーを使用して表されます。 その後で、関係役割をエンタープライズ Bean のキーに追加することができます。 これによって、キー・クラスの関係部分において外部キーを表せるようになります。

Bean のキーに役割を追加するには、役割の多重度が一重でなければならず、それは必須です (例えば、1..1)。また、役割が所有する Bean でも、外部キー・チェック・ボックスが選択されている必要があります。 規則は、EJB 2.x CMP エンティティー Bean の場合と同じです。ただし、必須であるかどうかをテストするための下限がないため、多重度は 1 になります。 外部キーのチェック・ボックスは、 どの CMP エンティティー Bean のマップ済みテーブルに外部キーの列を入れるか指定するために使用されることに注意してください。 CMP エンティティー Bean は、役割に対するソース・エンタープライズ Bean です。

上記のサンプルでは、多重度が 1..1 の場合、employeeID の役割を Employee キーの一部にすることができ、Employee の外部キー・チェック・ボックスは選択されます。 さらに、役割を必要に応じてマーク付けすると (例えば、1..x)、 役割のタイプをパラメーターとしてホーム・インターフェースの create メソッドに追加することになります。 EJB 2.x の関係では、ナビゲート可能なチェック・ボックスを選択した場合、cmr フィールドが必須になります。 「ナビゲート可能」が選択できるようになるのは、 ローカル・クライアント・ビューをもつ CMP の場合だけです。 CMP エンティティー Bean の 同一の EJB のバージョンに対してのみ、関係を定義することができます。 EJB 1.x および EJB 2.x CMP エンティティー Bean の間の関係を作成することはできません。

EJB 2.x の「関係の作成」ウィザードでは、関係の UML ビュー、 および仕様ビューが示されます。 注意すべき点は、仕様ビューで説明されている多重度が EJB 仕様のルールに対応していることです。役割の多重度は関係と 相対し、UML ビュー内ではソースのエンタープライズ Bean と相対するため、 UML ビューに対しては下位となります。

関連タスク
Bean 関係の定義
EJB 2.x Bean の関係を作成

フィードバック