WebSphere Application Server Network Deployment, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

先読みヒント

先読み方式を使用すると、 アプリケーションは、1 回の照会でトランザクションのコンテナー管理パーシスタンス (CMP) Bean の作業セットを検索して、 データベースの往復の回数を最小限に押さえることができます。 先読みにより、 要求された CMP Bean の活動化、 関連 Bean のデータのキャッシングが行われ、 アプリケーションで次に必要となる可能性が最も高い Bean のデータが確実に存在するようにします。 先読みヒント は、読み取り対象となる関連 Bean の表現です。 このヒントは、要求される Bean タイプの findByPrimaryKey メソッドに関連付けられます。 ここで、この Bean のタイプは EJB 2.x 準拠の CMP エンティティー Bean でなければなりません。

先読みヒントは、文字ストリングの形式を取ります。 このストリングは、ユーザーが指定する必要はありません。 Bean に定義されているコンテナー管理関係 (CMR) に基づいて、ウィザードにより生成されます。 次に示す例は、単なる補足情報です。 CMP Bean タイプ A には、Bean A のインスタンスを戻すファインダー・メソッドがあるものとします。 このメソッドの先読みヒントは、RelB.RelC; RelD という表記を使用して指定されています。

前出の表記は次のように解釈します。

タイプ A の Bean がデータベースから検索されるごとに、 それと直接関係がある B Bean と D Bean、 およびそれと間接的に関係がある C Bean も検索されます。 結果セットの各行における検索済み Bean のデータ列の順序は、 先読みヒントでの順序と同じです。 つまり、A Bean、B Bean (またはヌル)、C Bean (またはヌル)、D Bean (またはヌル) の順になります。 ヒントの中で同じ関係が 2 回以上示されている場合 (例えば、RelB.RelC;RelB.RelE)、 Bean のデータ列は、結果セット内の、ヒント内で最初に占有する位置に一度だけ現れます。

この表記に示されているトークン (RelB など) は、 その Bean 用のデプロイメント記述子で定義されている関係についての CMR フィールド名になっていなければなりません。 RelB.RelC などの間接的な関係では、RelC が、 Bean タイプ B 用のデプロイメント記述子に定義されている CMR フィールド名です。

単一の先読みヒントでは、 複数の関係において同じ Bean タイプを参照することはできません。 例えば、Department Bean に、Employee Bean との employees という関係があり、 さらに Employee Bean との manager という関係もある場合、 先読みヒントでは、employeesmanager の両方を指定することはできません。

先読みヒントの設定方法について詳しくは、Rational Application Developer 製品の資料を参照してください。

先読みヒントのランタイム動作

先読みヒントを作成する際には、 以下のヒントおよび制限を考慮してください。
  • 長く、または複雑なパスでの先読みヒントの結果、複雑すぎて使いにくい照会になることがあります。 ルートまたはリーフ継承マッピングでの先読みヒントには、特に注意が必要です。 必要な結合操作の複雑さを測定するために、先読みプリロードを構成する可能性がある、 表の数を加算します。 結果のステートメントが、ターゲット・データベース上で適切な照会を構成する かどうかを考慮します。
  • 以下の場合、先読みヒントは機能しません。
    • M:N 関係を介したプリロード・パス
    • 再帰的エンタープライズ Bean 関係または再帰的 fk 関係を介したプリロード・パス
    • [バージョン 6.0.2] 読み取りヘッド・ヒントが、これらの 2 つの操作の結合をサポートしないデータベースで、 表の結合を必要とする SELECT FOR UPDATE ステートメントに適用される場合。

      一般的に、パーシスタンス・マネージャーは、Bean が厳しいロック・ポリシーを強制するアクセス・インテントを 持つ場合にのみ、Bean に対して SELECT FOR UPDATE ステートメントを発行します。 厳しいロック・ポリシーでは、 データベース選択照会の SELECT FOR UPDATE ステートメントを必要とします。データベース表の設計に ステートメントを満たす結合操作が必要な場合は、多数のデータベースが例外を発行します。 これらのデータベースは、SELECT FOR UPDATE ステートメントでの表の結合をサポートしないためです。このような場合、WebSphere Application Server は 先読みヒントを実装しません。データベースがこれをサポートする場合、Application Server は、 ユーザーが構成する先読みヒントを実装します。

      DB2 Universal Database V8.2 は、 表の結合で SELECT FOR UPDATE ステートメントをサポートします。

    • [バージョン 6.0.1] 先読みヒントに表の結合が含まれる場合、

      アクセス・インテントが 異なると、結果として SELECT FOR UPDATE ステートメントが必要となる場合があります。JDBC ドライバーのマトリックスおよび SELECT FOR UPDATE サポートを確認して、readAhead が使用可能かどうかを確認します。




関連概念
アクセス・インテント・ポリシー
並行性制御
関連タスク
アクセス・インテント・ポリシーの使用
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 10:13:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/cejb_read.html