30.6.8. BMP カスタムファインダー
JBoss は bean 管理による永続カスタムファインダーもサポートします。カスタムの finder メソッドがホーム、またはローカルのホームインターフェースで宣言した finder と一致する場合、JBoss は
ejb-jar.xml
または jbosscmp-jdbc.xml
ファイルで宣言したその他の実装に優先して、このカスタムファインダーを呼び出します。以下のシンプルな例に、プライマリキーの集まりによるエンティティを示します。
public abstract class GangsterBean implements EntityBean { public Collection ejbFindByPrimaryKeys(Collection keys) { return keys; } }
データベースに接続せずにプライマリキーを実際のエンティティオブジェクトに変換できるため、非常に便利な finder です。問題なのは、データベースに存在しないプライマリキーでエンティティオブジェクトを作成できるという点です。無効なエンティティでメソッドが呼び出された場合、NoSuchEntityException が送出されます。生成されたエンティティ bean は finder を実装している EJB 仕様に反するのも問題点の一つです。JBoss EJB verifier は StrictVerifier 属性が false に設定されない限り、このようなエンティティをデプロイできません。