createViewObjectFromQueryClauses()
をアプリケーション・モジュールでコールすることにより、実行時に新規ビュー・オブジェクトを動的に定義し、そのインスタンスをアプリケーション・モジュールのデータ・モデルに動的に追加できます。
注意: 作成したビュー・オブジェクト・インスタンスにはエンティティ・オブジェクトの慣用名が必ず1つ与えられ、エキスパート・モードの問合せは与えられません。この詳細、またはエンティティ・オブジェクトの慣用名を持たない、あるいは複数持つビュー・オブジェクトのインスタンスの追加方法は、関連項目のトピックを参照してください。
新規のエンティティに基づく定義を使用して実行時にビュー・オブジェクト・インスタンスを追加するには、次のようにします。
OrdersForCustomer
の場合、次のコードを使用します。
String voInstanceName = "OrdersForCustomer";
Orders
というエンティティを使用し、これがorderentry.businessdomain
パッケージに含まれている場合、次のコードを使用します。
String eoDefName = "orderentry.businessdomain.Orders";
句には、エンティティ・オブジェクトが持つ属性と同じ数の列が含まれる必要があります(ビュー・オブジェクト属性は後で追加および削除できます)。句の列は、エンティティ属性がエンティティ・オブジェクトのXMLファイルで指定されている順序に従ってエンティティ属性にマップされます。句の最初の列は最初のエンティティ属性、2番目の列は2番目のエンティティ属性というように、順にマップされます。たとえば、Ordersに次の属性がある場合があります。
このような場合、次のSELECT句を使用できます。
String selectClause =
"ORDER_ID, ORDER_DATE, ORDER_MODE, CUSTOMER_ID, " +
"ORDER_STATUS, ORDER_TOTAL, SALES_REP_ID, PROMOTION_ID";
警告: 問合せ列の順序は、対応するエンティティ・オブジェクト属性の順序と必ず一致させてください。順序が正しくないと、ビュー・オブジェクトのデータ取得メカニズムとエンティティ・オブジェクトのデータ操作メカニズムで競合が発生するため、RowInconsistentException
が生じる場合があり、データが破損する場合もあります。
String fromClause = "ORDERS";
null
を使用します。たとえば、次の定義はどちらも適切です。
String whereClause = "ORDER_TOTAL > 500";
String whereClause = null;
null
を使用します。たとえば、次の定義はどちらも適切です。
String orderByClause = "ORDER_TOTAL";
String whereClause = null;
createViewObjectFromQueryClauses()
をコールします。
viewObject ordVO = myAM.createViewObjectFromQueryClauses(
voInstanceName, eoDefName, selectClause, fromClause,
whereClause, orderByClause);
注意: このメソッドを使用してビュー・オブジェクトを作成すると、最初にデータをフェッチするとき、問合せが2回実行される場合があります。最初の問合せでは、データ型と精度の情報が収集されます。この情報は、データを適切なJava型にマップし、(最大値よりも低い精度を指定して)問合せの効率を上げるために、後の問合せで使用されます。2回実行するとパフォーマンス上問題がある、負荷の高い問合せの場合、回避策として、行を返さないダミーのWHERE句を使用してまずビュー・オブジェクトを作成し、そのビュー・オブジェクトに対してメタデータ問合せと属性定義を容易にするgetAttributeCount()
をコールし、次にsetQuery()
をコールして、必要に応じて問合せを変更します。このようにすると、最初の問合せは、同じデータセットに対する単純で負荷の高くない問合せになります。
実行時にビュー・オブジェクト・インスタンスをデータ・モデルに追加する方法
ビュー・オブジェクト属性について
Oracle ADFビュー・オブジェクトについて
Oracle ADFアプリケーション・モジュールについて
ビュー・オブジェクト・インスタンスとビュー・リンク・インスタンスについて
Javaバッチ・クライアントからのルート・レベルのアプリケーション・モジュールへのアクセス
データ・モデル内のビュー・オブジェクト・インスタンスの検索
事前定義済ビュー・オブジェクトに基づく実行時のビュー・オブジェクト・インスタンスの追加
新規のSQLのみの定義を使用した実行時のビュー・オブジェクト・インスタンスの追加
Copyright © 1997, 2004, Oracle. All rights reserved.