ejbSelectメソッドを使用することで、finderメソッドと同様に特定のインスタンス、またはインスタンスの集合を検索できます。
ejbSelectメソッドの特徴
ejbSelectメソッドは、Finderメソッドと異なりHomeインタフェースに宣言しないため、クライアントアプリケーションまたはほかのEJBアプリケーションから呼び出すことはできません。
ejbSelectメソッドはCMPフィールド値を返却することができます。複数のリファレンスを返却する場合は、戻り値の型としてjava.util.Collection型を使用できます。
ejbSelectメソッドはrelationshipがあるBeanのインタフェース、またはそのコレクションを返却できます。
ejbSelectメソッドは集合関数の結果を返却できます。
ejbSelectメソッド内からデータベースアクセスを行うには、deployment descriptorに定義されたEJB QLを使用します。
ejbHomeメソッド内よりejbSelectメソッドを使用することにより、データベースへのアクセスをより簡単に行うことができます。
Enterprise BeanのRemoteまたはLocalインタフェースタイプを返却できます。そのインタフェースのコレクションを返却する場合は、インタフェースタイプ(RemoteまたはLocal)をdeployment descriptorに指定します。それ以外の場合は、インタフェースタイプを指定する必要はありません。
注意
java.util.Set型を戻り値に持つejbSelectメソッドを使用することはできません。
ejbSelectメソッドはEnterprise Beanクラス内ならejbHomeメソッドだけでなくビジネスメソッド、ejbLoadメソッドおよびejbStoreメソッドからも利用できます。
ejbSelectメソッドの規約
ejbSelectメソッドは以下の規約を満たしていなければなりません。
メソッド名はejbSelectで始まらなければなりません。
メソッドはpublicとして定義されていなければなりません。
メソッドはabstractとして定義されていなければなりません。
throws句には、javax.ejb.FinderExceptionを定義してください。
記述例
Enterprise Beanには以下のように記述します。
public abstract class CustomerBean implement javax.ejb.EntityBean{ public abstract java.util.Collection ejbSelectOrders(int priority) throws javax.ejb.FinderException; }