「チューニング」ページを使用して、アプリケーションのパフォーマンスをチューニングします。
「必要に応じて」を指定した場合、結果セットはオープンされたままになり、ユーザーが行セット内をナビゲートしたときに行がフェッチされます。ユーザーが行セットの終わりに達すると、結果セットがクローズされます。行数が多く、アプリケーションでは一部の行しか使用されない可能性が高い場合などには、このオプションが役立ちます。
「同時」を指定した場合、ユーザーが行セットをナビゲートしなくても、結果セットからすべての行がフェッチされます。すべての行がフェッチされた後、結果セットがクローズされます。行数が少ない場合などには、このオプションが便利です。
「同時」を指定した場合は、データ・フェッチのペナルティがすべて同時に実施されます。「必要に応じて」を指定した場合、ペナルティは段階的に適用されます。
行セット内の行数が比較的少なく、ビュー・オブジェクトでオープンされている行セットの数が多い場合などは、「同時」を使用してください。これにより、JDBCの結果セットを使い切ることを回避できます。「必要に応じて」を指定した場合に、オープンされる(終わりまでナビゲートしていないのでオープンされたままの)行セットの数が多すぎると、結果セットが足りなくなり、DMLExceptionがスローされる可能性があります。(必要な場合は、jbo.max.cursorsのランタイム・パラメータの値を大きく設定できます。)これに対し、結果セットに含まれる行数が多い場合は、すべての行を取得する負荷がかかるため、「同時」はお薦めできません。
ヒントは、QueryHintプロパティを介してビュー・オブジェクトのXMLファイルに格納されます。ヒントは、ViewObject
インタフェースのメソッドsetQueryOptimizerHint
およびgetQueryOptimizerHint
を使用してオーバーライドできます。詳細は、Javadocを参照してください。
実行時に、問合せが(エキスパート・モードではなく)標準モードであり、QueryHintプロパティがNULLまたは空でない場合、SELECT文の引数は次のようになります。
SELECT /*+ value-of-optimizer-hint */ ...
オプティマイザ・ヒントの値はSELECTキーワードの直後に指定し、前後にスペースを付けて/*+と*/で囲みます。
エキスパート・モードの問合せでも同様ですが、ラップするSELECT * FROM ()
ラッパーにヒントを含める点が異なります。
SELECT /*+ value-of-optimizer-hint */ * FROM (...)
(Oracleによって提供されない)その他のSQLBuilder実装では、このプロパティは無視される場合があります。
フェッチ・サイズおよびフェッチ・モードは、ビジネス・ロジック層でデータベースからフェッチされる行数を制御します。フェッチのパラメータは、ビュー・オブジェクトのXMLファイルに格納されています。
XMLパラメータをクライアント・コード内でオーバーライドすることも、ビジネス・ロジック層のビュー・オブジェクト・コード内でオーバーライドすることもできます。oracle.jbo.server.ViewObjectImpl
インタフェースの次のメソッドによって、フェッチの方針(フェッチ・サイズも含め)が処理されます。
setFetchMode
getFetchMode
getFetchSize
setFetchSize
setMaxFetchSize
getMaxFetchSize
これらのメソッドは、ビジネス・ロジック層でのみ使用可能です。これに対し、(ViewObject
インタフェースの)MaxFetchSize
メソッドは、ビジネス・ロジック層からもクライアント・コードからも使用できます。詳細は、Javadocを参照してください。
ビュー・オブジェクトとは
エンティティ・オブジェクトとは
ビュー属性とは
ビジネス・ロジック層におけるキャッシュ・データ処理方法
ストアド・プロシージャの使用について