フォルトインについて

フォルトインはOracle ADFエンティティ・キャッシュのメカニズムの1つで、未取得属性を要求するビジネス・ロジック・メソッドを扱います。

未取得属性

ほとんどの場合、Oracle ADFエンティティ・キャッシュには、ビュー・オブジェクトの問合せのみによって値が移入されます。たとえば、次のビジネス・コンポーネントを考えてみます。

OrderItemsViewのインスタンスがその問合せを実行した唯一のビュー・オブジェクト・インスタンスである場合、OrderItemsエンティティ・キャッシュより、LineItemIdUnitPriceおよびQuantityに値が移入されますが、OrderIdProductIdnullのままです。

ビジネス・ロジックと未取得属性

ただし、null属性がビジネス・ロジックによって要求される場合があります。たとえば、メソッドsetQuantity()に次のようなテストが含まれる場合があります。

if (getLineItemId() == RARE_ITEM)
{
  if (value > 1)
  {
    throw new oracle.jbo.JboException(
      "One per order for this item.");
  }
}    

エンティティ・キャッシュでのフォルトインを使用した未取得属性の処理

ビジネス・ロジックによって未取得属性が要求されると、エンティティ・キャッシュによってフォルトイン・メカニズムが起動されます。このメカニズムによって、その行に対してすべての属性を移入する問合せが実行されます。前述の例では、フォルトイン・メカニズムは次の行でトリガーされます。

if (getLineItemId() == RARE_ITEM)

そして、次の問合せを実行します。

SELECT ORDER_ID, PRODUCT_ID
FROM ORDER_ITEMS
WHERE LINE_ITEM_ID = <current entity instance's id>    

フォルトインによる負荷

フォルトインは、ビジネス・ロジックによる未取得属性へのアクセス要求が時々発生する場合には適切なメカニズムです。ただし、フォルトインを頻繁に使用すると、数多くの小さな問合せがデータベースに送信されるため、データベース・アクセスおよび処理時間に大きく影響します。

ビュー・オブジェクトで公開されていない属性が、ビジネス・ロジックによって繰り返し要求される可能性が高い場合は、フォルトインを回避する手順を実行する必要があります。


ビジネス・コンポーネントのチューニング
Oracle ADF Business Componentsのキャッシュ管理について
ビジネス・ロジックの実装

 

 

Copyright © 1997, 2004, Oracle. All rights reserved.