キー・クラス は、エンティティー 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 仕様で記述されている不明の主キー定義はサポートされていません。その次善策は、 特定の主キー・クラスを定義することです。