Apdesigner プログラマーズガイド
目次 索引 前ページ次ページ

第2部 アプリケーション開発編> 第3章 Enterprise JavaBeans (EJB)を開発する> 3.3 EJBのプログラミング

3.3.8 Entity Bean間のリレーションを定義する

EJB2.0 Container-managed persistenceでは複数のEntity Beanを関連付けることができます。このEntity Bean間の関係をリレーションと呼びます。ApdesignerのCMP2.0 リレーション定義ウィザードを使用することで、リレーションを定義することができます。

++リレーションの方向性と多重度

あるEntity Beanが、もう一方のEntity Beanを参照している場合、これら2つのEntity Bean間は単方向のリレーションとなります。また、2つのEntity Beanが互いを参照している場合は双方向のリレーションとなります。この時、参照元はCMRフィールドと呼ばれるEntity Bean間の永続的な関係を保持するフィールドを使用して、参照先との関係を保持します。また、参照元と参照先の関係にはOne:One、One:Many、Many:One、Many:Manyの4種類の多重度が存在します。

種類

One:One

顧客とクレジットカードの関係。顧客1人とクレジットカード1枚は対応しています。

One:Many

顧客と電話番号の関係。1人の顧客が多くの電話番号(自宅、携帯、職場など)を持っている状態です。

Many:Many

顧客とイベントの関係。1人の顧客は何回もイベントに参加し、1回のイベントには複数の顧客が参加します。

実際にCMRフィールドを用いて、関連付けられているEntity Beanのインスタンス(データ)を取得するには、どのように対応付けるかを定義する必要があります。
対応付けについては、多重度によって定義方法が異なり、それぞれの決められた方式でデータベースを定義する必要があります。

外部キー

リレーションの多重度がOne:Oneの場合、Entity Bean間の関係を保持するために、外部キーを使用します。
外部キーは、参照先のPrimary keyの値を格納するためのDBカラムです。この値によって、関連付けられている参照先のEntity Beanのインスタンス(データ)を取得します。
参照方向が、単方向、双方向のどちらの場合にも、お互いのPrimary keyを参照する外部キーを定義する必要があります。

Joinテーブル

リレーションの多重度がOne:Many、Many:One、Many:Manyの場合、Entity Bean間の関係を保持するために、Joinテーブルを使用します(以下の例ではCustmerEventJoinテーブルがJoinテーブルです)。
多重度がOne:One以外の場合には、Entity Beanの1つのインスタンスに関連付けられる参照先のEntity Beanのインスタンスがn個になり、各Entity Beanに対応付けられているデータベースのテーブルに外部キーを定義する方式では、データの関連付けを行うことができません。そのため、対応付けるPrimary keyの値の組み合わせを格納するためのJoinテーブルを使用します。
Joinテーブルの各カラムは、リレーションを構成する各Enterprise BeanのPrimary keyと対応付ける必要があります。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 1998-2006