アプリケーションのパフォーマンスとエンティティー Bean の動作

WebSphere® Application Server では、 Enterprise JavaBeans (EJB) 仕様で必要な 2 つの動作をオーバーライドすることができます。 これは、アプリケーションが、これらの Bean データ管理を少し異なる方法で処理することにより利益を得る可能性があるためです。

findBy メソッドのアプリケーション管理パーシスタント・ストアの同期

EJB 2.0 および 2.1 仕様のセクション 10.5.3 および 12.1.4.2 では、 任意の findBy メソッド (findByPrimaryKey を除く) の一部として照会を実行する前に、 EJB コンテナーが永続ストレージに、 現在のトランザクションに参加するタイプのエンティティー Bean の状態を書き込みます。 すなわち、コンテナーは以下のアクションを実行します。
  1. 現在のトランザクションに参加し、 かつ、findby メソッドが戻しているタイプと同じである Bean のリストを作成します。
  2. 照会を実行する前に、これらのエンタープライズ Bean の状況を永続ストレージに保管します。
EJB インスタンスの状態が現在のトランザクションで変更されない場合、 そのインスタンスの保管操作はスキップされます。これを実行することにより、 すべてのパーシスタント・データが最新の状態で照会が実行され、 データ保全性に関する問題の可能性が削減されます。

ただし、 EJB コンテナーがすべての findBy メソッドでこのアクションを自動的に実行することが 非効率的で浪費的となるシナリオもあります。この例としては、 findBy 照会で最新データが使用されることをアプリケーション自体が確認する場合や、 アプリケーションが、照会結果の一部として現在以外のデータを許容できる場合があります。

WebSphere Application Server では、アプリケーションの制御下で同期化処理を開始したり、 アプリケーション内の特定の EJB タイプに対して、コンテナー管理された同期を使用不可にしたりすることができます。 これらの機能を注意して使用することにより、データ保全性を犠牲にすることなく、 ご使用のアプリケーションのパフォーマンスを向上させることができます。トピック『エンティティー Bean およびデータ・ストアの同期の操作』を参照してください。

未変更エンティティー Bean インスタンス上での ejbStore 呼び出しの回避

EJB 仕様では、EJB コンテナーは、トランザクションがコミットされるときに、 そのトランザクション内のすべてのエンティティー Bean 上でユーザー提供の ejbStore メソッドを 呼び出す必要があります。コンテナー管理パーシスタンス (CMP) Bean (Bean 管理パーシスタンスではなく) の場合、CMP Bean 上のこのメソッドは空であることが多いため、 通常、この操作は必要ありません。メソッドが空ではない場合でも、 アプリケーションでは、 現行トランザクション中に Bean のパーシスタント状態が変更される場合にのみ、 このメソッドが呼び出される必要があります。

WebSphere Application Server では、 アプリケーション内の特定の EJB タイプに対して、この動作が必要かどうかを示すためのメカニズムが提供されています。トピック『修正していない EntityBean インスタンス上での ejbStore 呼び出しの回避』を参照してください。


トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cdat_disflush
ファイル名:cdat_disflush.html