私は "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. JS Generators: `return yield 'と` yield'はどう違うのですか?
- 4. yield mapの理解のため
- 5. redux-sagaでyield * vs yieldをいつ使うべきですか?
- 6. NUnit、ExpectedException&yield yieldで奇妙な動作が発生する
- 7. ユニティアニメーション - yield yield new WaitForSeconds(secs)not working
- 8. @yield、Laravel
- 9. コンテンツは<%yield%>のapplication.html.erbファイルにありません
- 10. Java:なぜThread.sleep()とyield()が静的なのですか?
- 11. コルーチンの "yield return 0"と "yield return null"の違いは何ですか?
- 12. 遅延Pythonのデバッグのためのソリューションはありますか?
- 13. yieldに関する疑問()
- 14. 'yield'キーワードのDocstringタグ
- 15. `&block`というパラメータを持たないメソッドで、`&block`と `yield self`を持つメソッドで` yield self`を使うのに違いはありますか?
- 16. Scala xs.foreach(yield _)?
- 17. Yield in Mathematica
- 18. Ruby:Proc#call vs yield
- 19. Slim Partial with Yield
- 20. F#yield! (yieldbang)オペレータ
- 21. window.openに遅延があります
- 22. graphql-tools:遅延フェッチ?
- 23. GRAILSで "yield/content_for"のレールを作成する方法はありますか?
- 24. 遅延フェッチ要素
- 25. Python BadYieldError When future yield
- 26. Laravel @yield in code php
- 27. laravel xss on @ yield( 'section')?
- 28. Unity - IEnumeratorのyieldがnullを返す
- 29. Oracle Weblogicアプリケーション・サーバーでLOBを遅延フェッチする方法はありますか。
- 30. "disconnect"イベントの発生にSocket.ioの遅延がありますか?