2

遅延読み込みを使用してフレックス アプリケーションにエンティティを読み込む方法を教えてください。深いオブジェクト グラフがあります。

4

2 に答える 2

2

GraniteDSとそのデータ管理フレームワークを併用すると、開始されていない関連付けを透過的に読み込むことができます。こちらのドキュメントを参照してください。したがって、基本的に、遅延コレクション/プロキシを初期化するために特別なことをする必要はありません。クライアント側でそれらの 1 つにアクセスするだけで (たとえば、コレクションのサイズを要求する)、それがトリガーされます。サーバーを呼び出して、初期化されていないデータをフェッチします。

透過的な遅延読み込みを望まない、または使用できない場合は、EntityManager へのアクセスが必要な特定の初期化メソッドを記述し、エンティティをパラメーターとして受け取り、必要な関連付けを初期化し、エンティティをクライアント。

于 2012-04-23T18:11:30.813 に答える
0

AFAIKそれは不可能です。これを行うには、休止状態のセッションを開く必要があります。私のプロジェクトでは、この方法で必要なことを行っています。

私はこのような春のサービスを持っています:

public interface SomeObjectManager {
   List<SomeObject> getObjects();     // here we have lazy loading for SomeObject's properties
   SomeObject getFullObject(long objectId); // here we're loading full object
}

SomeObjectの一部のプロパティは、遅延読み込みを使用します。それらをロードするには、次のようなHQLクエリを使用します。

SELECT s FROM SomeObject s
   LEFT JOIN FETCH s.child children
      LEFT JOIN FETCH children.items items
         LEFT JOIN FETCH items.property
WHERE s.id=:id

このクエリは、休止状態で定義されたプロパティをレイジーにロードするように強制します。

したがって、完全にロードされたSomeObjectインスタンスが必要ない場合は、getObjects()メソッドを使用します。その場合、getFullObject()メソッドを使用する具体的なSomeObjectインスタンスの詳細が必要です。

お役に立てれば。

于 2011-09-16T12:27:47.527 に答える