Apdesigner プログラマーズガイド
目次 索引 前ページ次ページ

第2部 アプリケーション開発編> 第3章 Enterprise JavaBeans (EJB)を開発する> 3.3 EJBのプログラミング

3.3.2 Entity Beanのプログラミング

++Entity Bean(BMP(Bean-managed persistence))の処理を記述する

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))の処理を記述する

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();

++リレーションとEJB QL

EJB2.0 Container-managed persistenceでは、複数のEntity Bean間の情報を関連付けることができます。この関係をリレーションと呼び、対応関係を定義することでプログラム記述なしで、関係する他のEntity Beanのデータを取得できます。

また、finderメソッドやejbSelectメソッドの検索条件を定義する際には、EJB QLで記述します。


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

All Rights Reserved, Copyright (C) 富士通株式会社 1998-2006