Apdesigner プログラマーズガイド |
目次 索引 |
第2部 アプリケーション開発編 | > 第3章 Enterprise JavaBeans (EJB)を開発する | > 3.3 EJBのプログラミング |
Entity Bean(BMP(Bean-managed persistence))では、ビジネスメソッドやEJB規約にそったデータベースアクセス処理を記述します。
以下にメソッドと記述する処理を示します。
メソッド |
処理 |
備考 |
---|---|---|
コンストラクタ |
クラス内のフィールドなどを初期化する処理を記述します。 |
|
ejbCreate |
引数でEnterprise Beanのフィールドを初期化し、データベースに新しいレコードを挿入する処理を記述します。 |
Enterprise Bean生成ウィザードでは、自動的に左記の処理を生成します。 |
ejbPostCreate |
Enterprise Beanインスタンスの初期化処理を記述します。 |
|
ejbFindByPrimaryKey |
データベースからレコードを検索し、単一のPrimary Keyを返す処理を記述します。 |
Enterprise Bean生成ウィザードでは、自動的に左記の処理を生成します。 |
ejbFind<Method> |
データベースからレコードを検索し、Primary Keyを返す処理を記述します。 |
|
ejbHome<Method> |
Enterprise Beanのインスタンスに依存しない、ユーザ固有の処理を記述します。 |
EJB2.0のみサポートしているメソッドです。 |
setEntityContext |
引数に指定されたEntityContextを他のメソッドで利用可能なようにEntity Beanのフィールドとして保存します。また、必要なリソースの取得などを行います。 |
Enterprise Bean生成ウィザードでは、自動的に左記の処理を生成します。 |
unsetEntityContext |
EntityContext通知時、独自に取得したリソースの解放手続きを記述します。 |
|
ejbRemove |
データベースからBeanが示すレコードを削除する処理を記述します。 |
|
ejbLoad |
データベースからレコードを読み込み、Bean内のフィールドに設定する処理を記述します。 |
|
ejbStore |
Bean内のフィールドの値でデータベースを更新する処理を記述します。 |
|
ejbActivate |
活性化されたときの処理を記述します。 |
|
ejbPassivate |
非活性化されたときの処理を記述します。 |
|
ビジネスメソッド |
クライアントから呼び出されるメソッドの処理を記述します。 |
|
Entity Bean(CMP(Container-managed persistence))では、ビジネスメソッドやEJB規約にそったメソッドの処理を記述します。
以下にメソッドと記述する処理を示します。
メソッド |
処理 |
備考 |
---|---|---|
コンストラクタ |
クラス内のフィールドなどを初期化する処理を記述します。 |
|
ejbCreate |
引数でEnterprise Beanのフィールドを初期化します。 |
Enterprise Bean生成ウィザードでは、自動的に左記の処理を生成します。 |
ejbPostCreate |
Enterprise Beanインスタンスの初期化処理を記述します。 |
|
ejbSelect<Method> |
Entity Beanのメソッド内で行うデータベース検索処理のためのメソッドです。クライアントには公開されません。 |
EJB2.0のみサポートしているメソッドです。 |
ejbHome<Method> |
Enterprise Beanのインスタンスに依存しない、ユーザ固有の処理を記述します。 |
EJB2.0のみサポートしているメソッドです。 |
setEntityContext |
引数に指定されたEntityContextを他のメソッドで利用可能なようにEntity Beanのフィールドとして保存します。また、必要なリソースの取得などを行います。 |
Enterprise Bean生成ウィザードでは、自動的に左記の処理を生成します。 |
unsetEntityContext |
EntityContext通知時、独自に取得したリソースの解放手続きを記述します。 |
|
ejbRemove |
削除前に行いたい任意の処理を記述します。 |
|
ejbLoad |
検索後に行いたい任意の処理を記述します。 |
|
ejbStore |
更新前に行いたい任意の処理を記述します。 |
|
ejbActivate |
活性化されたときの処理を記述します。 |
|
ejbPassivate |
非活性化されたときの処理を記述します。 |
|
ビジネスメソッド |
クライアントから呼び出されるメソッドの処理を記述します。 |
|
以下に、Entity Beanでデータベースにアクセスするイメージを示します。
呼出し元(Session Bean)でトランザクションを開始するには、setSessionContext()メソッドで通知された、コンテキストからトランザクションコンテキストを取得します。以下に例を示します。
UserTransaction ut = ctx.getUserTransaction();
EJB1.1規約では、javax.transaction.UserTransactionを使用します。
得られたトランザクションコンテキストを使ってトランザクションを開始します。以下に例を示します。
ut.begin();
呼出し元から、Homeインタフェースのcreate()メソッドを使用して、EJB objectを新規に生成します。このとき、データベースには、create()メソッドのパラメタを使って、新規の行が追加(INSERT)されます。Entity BeanのEnterprise Beanでは対応するejbCreate()およびejbPostCreate()メソッドを定義して、データベースへの行の追加処理を記述します。呼出し元には、新規に追加した行に対応する、Remoteインタフェースが返却されます。
呼出し元から、Homeインタフェースのfinderメソッドを使用して、EJB objectを生成します。finderメソッドとは、メソッドの名前がfindで始まる名前のメソッドの総称であり、ユーザが命名します(例:findByAccount())。このとき、finderメソッドのパラメタを検索条件として、行が読み込まれます。検索条件によっては複数の行が読み込まれます。Entity BeanのEnterprise Beanでは対応するejbFindメソッド(例:ejbFindByAccount())を定義して、データベースからの読み込み処理を記述します。呼出し元には、検索した行に対応する、RemoteインタフェースまたはRemoteインタフェースを含むコレクション(java.util.Enumerationまたはjava.util.Collection)が返却されます。
行の新規追加(create()メソッド)または行の検索(finderメソッド)で返却されたRemoteインタフェースのビジネスメソッドを使って、EJB object内のフィールドを更新します。データベースへの更新は、commit時に行われます。
行の新規追加(create()メソッド)または行の検索(finderメソッド)で返却されたRemoteインタフェースのremove()メソッドを呼び出すことで、EJB objectを消去します。Entity BeanのEnterprise Beanでは、対応するejbRemove()メソッドを定義して、データベースからの行の削除処理(DELETE)を記述します。
トランザクションコンテキストを使用して、トランザクションの確定(commit)または取り消し(rollback)を行います。以下に例を示します。
ut.commit(); ut.rollback();
EJB2.0 Container-managed persistenceでは、複数のEntity Bean間の情報を関連付けることができます。この関係をリレーションと呼び、対応関係を定義することでプログラム記述なしで、関係する他のEntity Beanのデータを取得できます。
また、finderメソッドやejbSelectメソッドの検索条件を定義する際には、EJB QLで記述します。
目次 索引 |