ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド

13.1.1 Entity Beanの形態

Entity BeanにはBMP(Bean-managed persistence)とCMP(Container-managed persistence)の2種類が存在し、それぞれ以下の特長があります。作成するEntity Beanの形態を選択してください。

BMP (Bean-managed persistence)

EJBアプリケーション内に適切なデータベース操作文を発行する処理を記述することにより、EJBアプリケーション自身がデータの永続化を行います。
状況に応じたきめ細かいデータベース管理ができます。

CMP (Container-managed persistence)
CMP1.1

コンテナがデータの永続化を行います。このため、EJBアプリケーション自身にデータベース操作文を記述することなく、データベースにアクセスできます。

CMP2.0

CMP2.0ではCMP1.1の機能に加えて、Entity Beanが別のEntity Beanとの関係を保持する機能を備えたことにより、CMP1.1と比べてはるかに複雑化したデータをEntity Beanに関連づけることができます。
EJBアプリケーションにデータベース操作文を記述する必要がないため、ポータビリティ性の高いアプリケーションが容易に開発できます。

CMP1.1とCMP2.0の違いについては、CMP1.1とCMP2.0の差異を参照してください。

処理イメージ

以下に、口座引き落とし処理を例にして、BMPとCMPのEntity Beanを利用した処理イメージを示します。

BMPの処理イメージ


  1. 呼出し元Beanは、口座NOを指定してfinderメソッドを呼び出します。コンテナは、Entity Beanのfinder処理を呼び出し、Entityオブジェクトを検索します。

  2. 呼出し元Beanは、支払金額に10万を設定し、ビジネスメソッド(Cal_bal)を呼び出します。コンテナは、Entity Beanのビジネスメソッドを呼び出す前にEntity BeanのLoad処理を呼び出します。

  3. Load処理では、データベースの検索を実施し、検索結果をEntityオブジェクトとして保持します。

  4. コンテナは、ビジネスメソッドを呼び出します。

  5. ビジネスメソッドは、Amount(残高)を更新します。

  6. 呼出し元Beanは、commitメソッドを呼び出します。コンテナは、Entity BeanのStore処理を呼び出し、Store処理ではデータベースの更新を実施します。


CMP1.1の処理イメージ


  1. 呼出し元Beanは、口座NOを指定してfinderメソッドを呼び出し、Entityオブジェクトの検索をコンテナに依頼します。

  2. 検索結果は、コンテナにより、Entityオブジェクトとして保持されます。

  3. 呼出し元Beanは、支払金額に10万を設定し、ビジネスメソッド(Cal_bal)を呼び出します。

  4. コンテナは、2.で保持した検索結果データをCMFへ転送し、ビジネスメソッドを呼び出します。

  5. ビジネスメソッドは、Amount(残高)を更新します。

  6. 呼出し元Beanからのcommit指示により、コンテナはデータベースの更新を実施します。

注意

CMPマッピング定義の定義情報についての詳細はInterstage管理コンソールのヘルプを参照してください。


CMP2.0の処理イメージ


  1. 呼出し元Beanは、口座NOを指定してfinderメソッドを呼び出し、Entityオブジェクトの検索をコンテナに依頼します。
    検索結果は、コンテナにより、Entityオブジェクトとして保持されます。

  2. 呼出し元Beanは、アクセッサメソッド(setAmount)を呼び出して、残高から10万を引いた値を新たに設定します。

  3. コンテナは、コンテナが実装するアクセッサメソッドを呼び出します。

  4. アクセッサメソッドは、Amount(残高)を更新します。

  5. 呼出し元Beanからのcommit指示により、コンテナはデータベースの更新を実施します。

注意

CMP2.0の定義情報についての詳細はInterstage管理コンソールのヘルプを参照してください。

CMP1.1とCMP2.0の差異

以下に、CMP1.1とCMP2.0の差異を表で示します。

  

CMP1.1

CMP2.0

relationshipの管理

アプリケーション内で解決してください。

deployment descriptorファイルにリレーションを定義することで、CMP2.0のBean間の関係を定義できます。定義された関係はコンテナが管理します。

finderメソッドの検索条件

Interstage StudioでEnterprise Java Bean開発時に指定します。また、Interstage管理コンソールまたはejbdefimportコマンドで編集できます。
Interstage Studio以外で開発したEnterprise Java Beanの場合にはInterstage管理コンソールまたはejbdefimportコマンドで指定します。

Enterprise Java Bean開発時にdeployment descriptorファイルにEJB QLを定義します。

CMFの更新

ビジネスメソッド内でEnterprise Beanクラスに定義したCMFを直接更新します。

deployment descriptorに定義したCMFに対応する抽象アクセッサメソッドをEnterprise Beanクラスに定義して、必ず抽象アクセサメソッドでCMFを更新します。

finderメソッドの復帰値の型

java.util.Collection型とjava.util.Enumeration型を使用できます。

java.util.Collection型が使用できます。

ejbSelectメソッドの使用

使用できません。

使用できます。