Criteria API で Stream を返す操作について #1108
-
目的: NativeSql による Stream で大量データを処理したい相談内容いつも大変お世話になっております。 私の参加しているプロジェクトでは、それなりに大きなデータに対する一括処理を行いたい場合があります( Sprig batch を使用)。 Dao でストリームを返す 場合には普通に取得結果が Stream として返されるようでしたので、 Criteria API の NativeSql でも同じだろうと思い、 stream() を使用してデータの取得を行おうと思っていたのですが、ドキュメントを読み込んでいると フェッチ (Entityql、NativeSql) に下記のような記載がありました。
この記載によると、一旦データを fetch() して、それを stream() で返しているようです。 この違いが生じているのは「 Entityql による重複除外を行うには、一度 fetch しないと正式な結果が返せない」ことからでしょうか? それとも、単にショートカットとして用意されているだけで深い意味はないのでしょうか。 大量データを処理する場合 SQL の用途が限られるため、動的な処理に強い Criteria API ではなく SQL ファイルで対応しても特に問題はないのですが、 Criteria API で処理可能なものは可能な限り Criteria API で処理したいと考えています。 |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 7 replies
-
フェッチ (Entityql、NativeSql) の |
Beta Was this translation helpful? Give feedback.
フェッチ (Entityql、NativeSql) の
stream()
はfetch().stream()
の単なるショートカットです。直接Streamを扱うには
mapStream
メソッドを使ってもらう必要があります。Stream
を呼び出し元に返すAPIは今のところありません。mapStream
メソッドで実現できないか検討してもらえないでしょうか?リソースのクローズはDoma側で実施するのでこちらが安全です。