WebObjects 5.2.3

com.webobjects.eocontrol
Interface EODeferredFaulting

All Superinterfaces:
EOFaulting
All Known Subinterfaces:
EOEnterpriseObject
All Known Implementing Classes:
EOCustomObject

public interface EODeferredFaulting
extends EOFaulting

EODeferredFaulting インターフェースは、エンタープライズオブジェクトがフォールティングを遅らせるために使うメソッドを定義しています。

Enterprise Objectsテクノロジーは、まだフェッチされていないオブジェクトの代役としてフォールトを使います。 フォールトの生成はフェッチよりも高速ですが、フォールトの初期化には時間がかかります。 さらにパフォーマンスを向上させるために、フレームワークは効率的な遅延フォールトを使います。

遅延フォールトを使うクラスのオブジェクトでは、リレーションシップ先が遅延フォールトとして設定されます。 特定のリレーションシップでは、すべてのエンタープライズオブジェクトが単体の遅延フォールトを共有します。 共有される遅延フォールトは生成されるフォールトの数を減らし、フェッチ時にフォールトを生成する負荷を軽減します。

例えばStudioへのリレーションシップを持つMovieクラスがあるとします。 遅延フォールティングなしでは、20のMovieオブジェクトをフェッチすると20のStudioオブジェクトが生成されます。 各Movieオブジェクトに対してフォールトが1つずつ生成されることになります。 遅延フォールティングを使うとフォールトが1つだけ生成され、すべてのMovieオブジェクトで共有されます。


Method Summary
 Object willReadRelationship(Object value)
           遅延フォールティングを使用するエンタープライズオブジェクトは、遅延フォールトでないリレーションシップ先のオブジェクトにアクセスする前に、このメソッドを実行します。
 
Methods inherited from interface com.webobjects.eocontrol.EOFaulting
clearFault, faultHandler, isFault, turnIntoFault, willRead
 

Method Detail

willReadRelationship

public Object willReadRelationship(Object value)

遅延フォールティングを使用するエンタープライズオブジェクトは、遅延フォールトでないリレーションシップ先のオブジェクトにアクセスする前に、このメソッドを実行します。 EOCustomObjectとEOGenericRecordの実装は、オブジェクトが遅延フォールトであるかどうかを確認します。 遅延フォールトであれば、通常のフォールトを生成して返します。

例として、Movieオブジェクトが遅延フォールトを使っているとします。 リレーションシップ(ここでは studio を例に挙げます)のアクセサメソッドは、オブジェクトを返す前に willReadRelationship を実行するべきです。 実装は次のようなコードになります。

    public Studio studio(){
        willRead();
        return this.willReadRelationship(studio);
    }

Parameters:
value - 遅延フォールトかどうかを確認するオブジェクト
Returns:
遅延フォールトかどうかを確認した結果のオブジェクト
See Also:
EOFaultHandler.createFaultForDeferredFault(Object fault, EOEnterpriseObject eo)

Last updated Thu Oct 21 15:04:16 PDT 2004.

Copyright © 2004 Apple Computer, Inc.