Apdesigner プログラマーズガイド |
目次 索引 |
第2部 アプリケーション開発編 | > 第3章 Enterprise JavaBeans (EJB)を開発する | > 3.3 EJBのプログラミング |
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を参照する外部キーを定義する必要があります。
リレーションの多重度が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と対応付ける必要があります。
目次 索引 |