キー・クラスとキー・フィールド

キー・クラスは、エンティティー Bean の作成や検索を行う際に使用します。キー・クラスは、リレーショナル・データベースの行の主キー列に対応するエンティティー Bean の識別を表します。 これらの列の 1 つに対応するエンティティー Bean の中にある指定されたコンテナーによって管理されるフィールドを、キー・フィールドといいます。

主キー・クラスの主な指定方法には、次の 2 つがあります。

1.1 CMP Bean の場合、Bean クラス内のそれぞれのキー・フィールドごとに、 キー・クラスで同じ名前と型をもつフィールドがなければなりません。 逆に言えば、キー・クラスのすべてのフィールドで、Bean クラスに同じ名前と型をもつフィールドが必要であり、 これらのフィールドはキー・フィールドと見なされます。2.x CMP Bean には、 それぞれのキー・フィールドに get および set メソッドが必要になります。

例えば、銀行用アプリケーション用の EJB 1.1 Account Bean があるとします。 accountNumber プロパティーがキー・フィールドとして指定されています。 これは、ACCOUNT データベース・テーブルの主キーに対応しています。 Account (AccountKey) のキー・クラスには、次のものが含まれます。

AccountKey の代わりに、Account は java.lang.String のキー・クラスと、 accountNumber の主キー・フィールドを使用することがあります。

キー・クラスは、継承されたすべてのエンタープライズ Bean で共通です。 つまり、親エンタープライズ Bean のキー・クラスは、そのすべての子エンタープライズ Bean でも使用されるということです。したがって、キー・クラスがサブタイプを持つエンティティーについて変更されると、または継承構造が変更されると、すべてのサブタイプ・エンティティーに対応するホーム・クラスおよび Bean クラスが再生成されます。 キー・クラスは、同じ継承の階層内の Bean 内のみで共有できます。

キーの一部として役割を持ち、その役割のエンタープライズ Bean タイプのキー形状が変更された場合 (つまり、キーが追加または削除された場合)、 これらの変更をすべてのキーの役割に波及させるためのダイアログが表示されます。 ほとんどの場合は、「はい」または「すべてはい」を選択します。 すべてのキー役割による変更を波及させないと、 コンパイル・エラーになります。

注: EJB ツールは、現在、EJB 2.0 仕様で記述されている不明の主キー定義はサポートしていません。その次善策は、 特定の主キー・クラスを定義することです。

フィードバック