Interstage Application Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第3部 EJB編> 第12章 Entity Beanの実装

12.9 Primary Keyクラスの作成

 Primary Keyクラスは、Entity Beanのインスタンスの識別子となるクラスで、特定のインスタンスを検索するのに使用されます。

 EJBコンテナは、データベースから取得したプライマリキーに対応するインスタンスを、キャッシュします。

 finderメソッドが実行された場合には、equalsメソッドとhashcodeメソッドを使用して、同じプライマリキーのインスタンスがキャッシュされているかを判定して、プライマリキーが合致する場合には、キャッシュされているEJB objectを返却します。

 Apworksを使用している場合は、自動的に生成されます。

■ Primary Keyクラスの規約

 Primary Keyクラスは以下の規約を満たしていなければなりません。

■ 記述する処理

  1. プライマリキー値を格納する変数を記述します。複数記述することもできます。
  2. パラメタなしの空コンストラクタを記述します。
  3. equalsメソッドを記述します。引数で渡されるプライマリキーオブジェクトと同じものかどうか判定します。
  4. hashCodeメソッドを記述します。プライマリキー値のhashcodeを返却します。

■equalsメソッドとhashcodeメソッド

 equalsメソッドとhashcodeメソッドには以下のような特徴があります。

メソッド定義時の注意事項


■ CMPでプライマリキーのフィールドが1つの場合

 CMPでプライマリキーのフィールドが1つの場合で、フィールドが以下の型の場合には、Primary Keyクラスを作成しないことも可能です。

 この場合、通常はPrimary Keyクラスを指定するHomeインタフェースのcreateメソッドやfindByPrimaryKeyメソッドなどの引数には以下のように、プライマリキーのフィールドを指定します。

例)プライマリキーがString型の場合

---------------------------------------------------------------------------------------
  public SampleRemote create(String pkField) throws javax.ejb.DuplicateKeyException, javax.ejb.CreateException, java.rmi.RemoteException;
  public SampleRemote findByPrimaryKey(String pkValue) throws javax.ejb.FinderException, javax.ejb.ObjectNotFoundException, java.rmi.RemoteException;
---------------------------------------------------------------------------------------

 また、deployment descriptorの“Primary Keyクラス名”にはプライマリキーのフィールドの型(java.lang.Stringなど)を指定し、“Primary Keyフィールド名”にはフィールド名を指定してください。


下へ12.9.1 CMPの記述例

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

All Rights Reserved, Copyright(C) 富士通株式会社 2005