コンテナー管理パーシスタンスの Bean 関連テクノロジー
WebSphere® Application Server では、Enterprise JavaBeans (EJB) 仕様で設定された標準を超えるコンテナー管理パーシスタンス (CMP) サービスが提供されます。
- エンティティー Bean 継承
- 継承はオブジェクト指向ソフトウェア開発の重要な特徴であり、
EJB 仕様から現在欠落している機能です。
継承を使用することで、開発者は、 すべてのサブクラスによって継承されるスーパークラス・エンティティー Bean に、 フィールド、関係、およびビジネス・ロジックを定義することができます。 WebSphere Application Server およびエンティティー Bean での継承の使用についての詳細は、Rational® Application Developer 資料のセクション『EJB 継承』を参照してください。
- アクセス・インテント・ポリシー
- アクセス・インテント・ポリシーは、 パーシスタンス・メカニズムが適切な最適化を行えるように、 エンティティー Bean にとって不可欠な状態でのアプリケーションの対話のインテントを示すことができるメカニズムを、Java™ Platform, Enterprise Edition (Java EE) アプリケーション開発者に提供します。 例えば、トランザクションが行われている間は、エンティティーが更新されないということが認識されている場合、 パーシスタンス管理は、トランザクションを行っている間は Bean に対する更新操作を許可しないことで、 並行性の制御を緩めて、なおデータの保全性を維持することができます。
- トランザクション全体にわたるデータのキャッシング
- Bean デプロイヤーが設定する構成可能なオプションとして、
トランザクション全体にわたってデータをキャッシングすることができ、
これによってパフォーマンスを大きく改善できます。
基本的には、これは、頻繁に変更されないデータに適しています。
このオプションは、LifetimeInCache です。
存続期間中はキャッシュに入れておくように構成されたエンティティーのデータは、
指定された存続期間が満了するまで、キャッシュの中に保管されます。
構成された存続期間中、そのエンティティーに関する要求は
キャッシュ化されたデータを使用するため、基礎となるデータ・ストアに対して照会が行われることはありません。
存続期間は、データがデータ・ストアから検索されて以来経過した時間として表すか、
あるいは、日または週の特定の時刻までとして表すことができます。
LifetimeInCache 値は以下のいずれかにすることができます。
- Off
- LifetimeInCache 設定は無視されます。このタイプの Bean は、トランザクショ ン有効範囲のキャッシュにしか入れられません。 このインスタンスのキャッシュ・データは、トランザクションが完了すると無効です。
- ElapsedTime
- LifetimeInCache 設定の値は、トランザクション (Bean インスタンス が検索される) が完了すると、現在時刻に追加されます。 このインスタンスのキャッシュ・データはこの時間以降は無効です。LifetimeInCache 設定の値は、分、時 間、日などになります。
- ClockTime
- LifetimeInCache の値は、特定の時刻を表します。この値を直前または直後の真夜中
に加算して将来の時刻値を計算し、
次にその時刻値を「経過時間」として扱います。この設定を使用すると、この Bean タイプのすべ
てのインスタンスが、インスタンスのキャッシュ・データをその取得時刻に
は関係なく、特定の時間に無効にするように指定することができます。
将来の時刻値を計算するのに直前または直後の真夜中のいずれを使用するかは、LifetimeInCache の値によります。 LifetimeInCache に直前の真夜中を加えたものが現在時刻に達しない場合は、直後の真夜中が使用されます。
ClockTime 設定を使用する場合は、LifetimeInCache の値は 24 時間を超える値を表してはいけません。 24 時間を超える場合は、キャッシュ・マネージャーが、 値が 24 時間以下になるまで、その値から 24 時間ずつ差し引いていきます。 深夜 12 時でデータを無効にするには、LifetimeInCache をゼロ (0) に設定します。
- WeekTime
- この設定は、LifetimeInCache の値が直前または直後の日曜日の真夜 中 (実際は、土曜日の 午後 11 時 59 分に 1 分を加えたもの) に追加さ れることを除いて、ClockTime と似ています。この場合、LifetimeInCache 値は 24 時間を 超えることはありますが、7 日を超えることはありません。
注:エンティティー Bean が使用するデータは、以前のトランザクションによってロード可能なため、 Bean を LifeTimeInCache として構成する場合、 その Bean の分離レベルおよび更新ロック (アクセス・インテント・ポリシー) は、現在のトランザクションでは失われています。 このため、ご使用のアプリケーションに読み取り専用データからの情報を計算するロジックがあり、 アプリケーションが別の Bean にその結果を保存する場合、データ保全性問題が発生する可能性があります。 メモリー内のキャッシュからデータをロードする場合、データが適切にロ ックされていることを確認するため、読み取り/読み取り整合性検査を実行することが重要になります。 そうしなければ、データは元のデータが変更されていることを知らずにデータベースに更新され、以前の変更が失われることになります。 詳しくは、『アセンブリー・ツールによる読み取り/読み取り整合性検査の構成』トピックを参照してください。
- 読み取り専用エンティティー Bean
- エンティティー Bean を読み取り専用であると宣言すると、キャッシュが提供するパフォーマンス機能が向上する可能性があります。
両方のフィーチャーが同じ原則 (永続ストレージにあるデータからのエンティティー Bean の頻繁な再ロードによって起こるオーバーヘッドを最小化する) で作動します。
エンティティー Bean を読み取り専用として指定すると、
ご使用のアプリケーションの必要に応じて、
再ロード要件および頻度を指定することができます。
この機能を使用するには、アセンブリー・ツール内の選択リストを使用して、 Bean キャッシング・オプションの特定のセットを選択して、Bean タイプを読み取り専用として宣言します。 詳しくは、『アセンブリー・ツールによる読み取り/読み取り整合性検査の構成』を参照してください。