私は "yield yield"(C#の構造)はJavaでは利用できないと理解します。しかし、私はJava/Hibernateで遅延ロードを行うとき。怠惰な読み込みや、利回りに似た何かを使って、コレクションを反復するには、どのような方法が推奨されますか?ハイバネートでの遅延フェッチのためにJavaにyield yieldがありますか?
1
A
答えて
2
Javaにはyield return文はありません。あなたが望むことを行うための最善の方法は、Iteratorという独自の実装を書くことです。
class LazyIterator implements Iterator<Foo> {
private Iterator<Foo> backingIterator = null; //set this later
private void lazyLoad() {
if (backingIterator != null) {
return;
}
//load the backing collection and assign to backingIterator here
}
@Override
public boolean hasNext() {
lazyLoad();
return backingIterator.hasNext();
}
@Override
public Foo next() {
lazyLoad();
return backingIterator.next();
}
@Override
public void remove() {
lazyLoad();
backingIterator.remove();
}
}
ご覧のとおり、これはオール・オア・ナッシング・ローズ・ローダーです。また、コレクションの進行中にのみデータをロードするインクリメンタル遅延ローダーも考えてください。これが便利なケースは、コレクションに非常に多数のレコードが含まれている場合です。
もっと具体的にする必要があります。CollectionまたはListの遅延読み込みラッパーを作成することもできます。このテクニックは似ていますが、一般的にはより多くの作業が必要になります(レイジーロードされたListはレイジーなIteratorが必要かもしれませんが、スレッドの安全性に関心を持つ必要があります)。
これは、基本的には、コンパイル時の変換で、C#のyieldとyieldの戻り値のキーワードを手作業で行います。
関連する問題
- 1. IEnumerableは延期するためにYieldを使用する必要があります
- 2. Rubyに「yield break」と同等の機能はありますか?
- 3. NUnit、ExpectedException&yield yieldで奇妙な動作が発生する
- 4. Java:なぜThread.sleep()とyield()が静的なのですか?
- 5. yieldに関する疑問()
- 6. 'yield'キーワードのDocstringタグ
- 7. Yield in Mathematica
- 8. Scala xs.foreach(yield _)?
- 9. Ruby:Proc#call vs yield
- 10. GRAILSで "yield/content_for"のレールを作成する方法はありますか?
- 11. Oracle Weblogicアプリケーション・サーバーでLOBを遅延フェッチする方法はありますか。
- 12. IEnumerable/yieldを使用したウィザードのナビゲーション
- 13. 'yield self'はinstance_evalと同じですか?
- 14. "disconnect"イベントの発生にSocket.ioの遅延がありますか?
- 15. Java yield()メソッドが機能しません。 Netbeans Ubuntu 10.04
- 16. jsonizeに遅延ロードされたオブジェクトしかフェッチしないようにする方法はありますか?
- 17. <%= yield %>はRailsContent()のRailsに相当しますか?
- 18. OpenCVの小さな画面に遅延がありますか?
- 19. yieldがpython 2.7では何をするのですか?
- 20. yieldがイテレータを返すのはなぜですか?
- 21. Rubyでyieldを呼び出すと正確にブロックする必要がありますか?
- 22. Linq to XML、yield and others
- 23. std :: this_thread :: yield()vs std :: this_thread :: sleep_for()?
- 24. ログインとシェルプロンプトの間に10秒の遅延があります。
- 25. 60 fpsで時々10msの遅延がありますか?
- 26. yieldステートメントをビューポートに応じてレンダリングしますか?
- 27. Clojureには遅延変数がありますか?
- 28. jqueryキーアップに遅延がありますか?
- 29. jQuery - なぜコールバック関数に遅延がありますか?
- 30. yield "コマンドが最初のターゲットの前に開始"エラー