アセンブルされた EJB モジュール内のコンテナー管理パーシスタンスのシーケンスのグループ化

コンテナー管理パーシスタンス (CMP) Bean を含む Enterprise JavaBeans (EJB) モジュールをアセンブルすると、アプリケーションの実行時に特定のタイプのデータベース関連の例外の発生を防ぐことができます。シーケンスのグループ化 によって、エンティティー Bean がリレーショナル・データベース・テーブルを更新する順序を指定することができます。

注: エンティティー Bean は EJB 3.x モジュールではサポートされていません。

参照保全性 (RI) の違反による例外の除去

シーケンスのグループ化は、データベースの 参照保全性 (RI) の違反を防ぐのに特に役に立ちます。 データベース RI ポリシーは、データベース表へのデータの書き込みやデータベース表からのデータの削除の方法に関する規則を規定しており、リレーショナルの整合性を保守します。 ただし、Bean パーシスタンスを管理するためのランタイム要件によって、EJB アプリケーションは RI 規則に違反し、データベースの例外を起こすことがあります。 これらのランタイム要件は、以下のことを必ず指示します。
  • エンティティー Bean は、メソッド呼び出しにより直ちにデータベースに関連するオペレーションを作成および除去します。
  • エンティティー Bean の変更は、finder メソッドが呼び出されるか、またはトランザクションが終了するまで、EJB コンテナーによってキャッシュされます。
したがって、エンティティー Bean がデータベースを更新する順序は予測不能です。 このランダム性により、アプリケーションがデータベース RI に違反する可能性が高くなります。 バッチ処理のオペレーションをキャッシュすると、これらのランタイム要件をオーバーライドしますが、特定の RI ポリシーを順守する Bean パーシスタンス・シーケンスを保証しません。

データベース RI を順守するパーシスタンス・シーケンスを保証する唯一の方法は、シーケンスを指定することです。これは、アセンブリー・ツールの EJB デプロイメント記述子エディターで行います。 シーケンスのグループ化フィーチャーで、Bean を CMP グループに割り当てます。各グループで、RI に違反せずに更新を行うために、パーシスタンス・マネージャーがデータベースに Bean データを挿入する順序を指定します。

シーケンス・グループを指定する方法の詳細については、トピックCMP シーケンス・グループのランタイムの設定を参照してください。 同期化する必要がある RI ポリシーについては、データベース管理者にお問い合わせください。

オプティミスティック並行性制御スキームの例外リスクの最小化

シーケンスのグループ化は、オプティミスティック並行性制御のために構成される エンティティー Bean のトランザクション・ロールバック例外のリスクも削減することができます。これらの並行性制御スキームでは、最大のトランザクションが一貫してデータにアクセスできるように、最小の時間でデータベース・ロックが行われます。 以下の 2 つの共通した理由によって、比較的制限されていない状態のデータベースにより、トランザクション・ロールバック例外が起こることがあります。
  • 並行トランザクションが同じテーブル行のロックを試行する場合、データベース・デッドロックが起こります。
  • トランザクションは、アプリケーション・ロジックに違反する順序で起こることがあります。

シーケンスのグループ化フィーチャーを使用して、これらの シナリオが起こりにくいように Bean パーシスタンスを配列します。


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



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