Homeインタフェースには、Entity Beanの生成および検索を行うためのメソッドを定義します。
Homeインタフェースは、RMIインタフェースの形で記述します。
また、EJB2.0規約以降に準拠したEJBアプリケーションでは、BMPだけejbHomeメソッドと呼ばれるビジネスメソッドをHomeインタフェースに記述できます。Homeインタフェースには、“create”、“find”、“remove”以外で始まる任意の名前を記述できます。
例えば、データベースのレコード件数を取得するビジネスメソッドなどが記述できるため、データベース操作をより自由にできます。
Interstage Studioを使用して開発を行った場合、Homeインタフェースのひな形が自動生成されます。
以下に、Homeインタフェースの記述形式を示します。
記述形式
public interface Homeインタフェース名 extends javax.ejb.EJBHome { public Remoteインタフェースタイプ create(任意の引数) throws javax.ejb.CreateException, java.rmi.RemoteException; public Remoteインタフェースタイプ findByPrimaryKey(primary key) throws java.rmi.RemoteException, javax.ejb.FinderException; public Remoteインタフェースタイプ find<METHOD>(任意の引数) throws java.rmi.RemoteException, javax.ejb.FinderException; public java.util.Enumeration find<METHOD>(任意の引数) throws java.rmi.RemoteException, javax.ejb.FinderException; public java.util.Collection find<METHOD>(任意の引数) throws java.rmi.RemoteException, javax.ejb.FinderException; }
規約
Homeインタフェースは以下の規約を満たしていなければなりません。
インタフェースはjavax.ejb.EJBHomeインタフェースを継承しなければなりません。
このインタフェースで定義されたメソッドはRMI over IIOPの規約に従わなくてはなりません。
Homeインタフェースには、以下のメソッドを定義します。
0個以上のcreateメソッド
1個以上のfinderメソッド
0個以上のejbHomeメソッド
createメソッドの規約
createメソッドは、インスタンスを生成するためのメソッドです。createメソッドが呼び出されることによって、INSERT文が実行され、データベースに新しい行が追加されます。
なお、EJB2.0規約以降に準拠したEJBアプリケーションでは、BMPだけcreateで始まる任意の名前を記述できます。これにより、createメソッド名に意味のある名前を記述できるため、EJBアプリケーションをわかりやすく作成できます。
createメソッドは以下の規約を満たしていなければなりません。
Homeインタフェースは、0個以上のcreateメソッドを定義します。
各createメソッドはcreateという名前で始まらなければなりません。
各createメソッドは、引数のタイプと数が、Enterprise Beanクラスに定義された ejbCreateメソッドの1つに一致しなくてはなりません。
createメソッドの返却値のタイプは、Enterprise BeanのRemoteインタフェースタイプでなければなりません。
throws句には、以下の例外をすべて定義する必要があります。
一致するEnterprise BeanクラスのejbCreateメソッドに定義されたすべての例外
javax.ejb.CreateException
java.rmi.RemoteException
finderメソッドの規約
finderメソッドは、特定のインスタンス、またはインスタンスの集合を検索するためのメソッドです。finderメソッドに指定した引数を検索条件にしたSELECT文が実行されます。
finderメソッドは以下の規約を満たしていなければなりません。
Homeインタフェースに、以下の条件を満たすfindByPrimaryKeyメソッドを定義しなければなりません。
findByPrimaryKeyという名前であること
引数は1つでプライマリキータイプであること
返却値はEnterprise BeanのRemoteインタフェースタイプであること
各finderメソッドは、find<METHOD>という名前(例:findLargeAccount)でなければなりません。
BMPの場合、各finderメソッドは、引数のタイプと数が、Enterprise Beanクラスに定義されたejbFind<METHOD>の1つに一致しなくてはなりません。
返却値のタイプは、以下のどれかでなければなりません。
Enterprise BeanのRemoteインタフェースタイプ
java.util.Enumerationインタフェース(BMP、CMP1.1のみ)
java.util.Collectionインタフェース
throws句には、以下の例外をすべて定義する必要があります。
一致するEnterprise BeanクラスのejbFind<METHOD>メソッドに定義されたすべての例外
javax.ejb.FinderException
java.rmi.RemoteException
注意
Homeインタフェースの作成における注意事項
throws句に宣言する例外の数は、5以下にしてください。多数宣言されている場合、配備時間に影響します。