テーブルに裏打ちされたJpaRepository
の大きなデータセットを取得することを検討しています。選択肢は、エンティティのコレクション(List
)またはPage
を返し、結果をステップ実行することです。ご注意ください - 私はこのセットのすべてのレコードを正確に1回消費しなければなりません。これは、「最初から1つ目の大規模なデータセットとリターン」操作ではありません。ページデータ付きSpringデータOracle JPAパフォーマンス
ページングのアイデアは魅力的ですが、質問されたページごとに以前のn-1ページをプルアップする必要があるため、パフォーマンスがひどく(n^2)結果セット。
代わりにList
の私の理解は、全体の結果セットがメモリにロードされるということです。 oracle JPA springにはバッキング結果セットがありません。だからここ
は、私の質問は
- ある正しい春データと連携
List
方法の私の理解ですか?それ以外の場合は、List
を使用します。 - 私が正しければ、ストリームの結果セットがありますか?
- 私が気づいていない第3の方法がありますか?
ドン」 により、たとえば、リターンパラメータとして
Slice
の代わりPage
を使用することができ、それを回避するために、難読化レイヤー(別名「ORM」)を使用します。プレーンJDBCを使用して、 'ResultSet'を繰り返し処理します。次に、メモリ内の現在の行を保持する必要はありません。 –@a_horse_with_no_name、ありがとうございます。 forward-onlyの結果セットでJDBCを使用することはできますが、Springのデータを使用する代わりに、これがプロジェクトの残りの部分を使用するためです。 – Prashant
パフォーマンスと(メモリ)効率を必要とする場合は、「直接」JDBCコールの代替手段はありません。 –