フォルトインはOracle ADFエンティティ・キャッシュのメカニズムの1つで、未取得属性を要求するビジネス・ロジック・メソッドを扱います。
ほとんどの場合、Oracle ADFエンティティ・キャッシュには、ビュー・オブジェクトの問合せのみによって値が移入されます。たとえば、次のビジネス・コンポーネントを考えてみます。
OrderItems
OrderId
LineItemId
ProductId
UnitPrice
Quantity
OrderItems
に基づいて作成されているが、次の属性のみを持つビュー・オブジェクトOrderItemsView
LineItemId
UnitPrice
Quantity
OrderItemsView
のインスタンスがその問合せを実行した唯一のビュー・オブジェクト・インスタンスである場合、OrderItems
エンティティ・キャッシュより、LineItemId
、UnitPrice
およびQuantity
に値が移入されますが、OrderId
とProductId
はnull
のままです。
ただし、null
属性がビジネス・ロジックによって要求される場合があります。たとえば、メソッドsetQuantity()
に次のようなテストが含まれる場合があります。
if (getLineItemId() == RARE_ITEM)
{
if (value > 1)
{
throw new oracle.jbo.JboException(
"One per order for this item.");
}
}
ビジネス・ロジックによって未取得属性が要求されると、エンティティ・キャッシュによってフォルトイン・メカニズムが起動されます。このメカニズムによって、その行に対してすべての属性を移入する問合せが実行されます。前述の例では、フォルトイン・メカニズムは次の行でトリガーされます。
if (LineItemId == 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, 2006, Oracle. All rights reserved.