Java8+JPAでSQL結果をStreamで返す方法
Java8+JPAを使用してStreamを返すことが出来るようになりました。
try with resourceでcloseする必要があります。この方法がメモリ節約できるようです。
リストを返すメソッドやPageableでページングするよりもストリームを返す方がメモリ消費量、DB問い合わせ回数を減らすことが出来るようなので、処理も高速です。
try (var emp = userRepository.findXxx()) { emp.forEach(System.out::println); }
You’re trying to execute a streaming query method without a surrounding transaction that keeps the connection open so that the Stream can actually be consumed. Make sure the code consuming the stream uses @Transactional or any other way of declaring a (read-only) transaction.
@Transactionalメソッド内でのみ使えます。
@Transactional public void findData() { try (var emp = userRepository.findData()) { emp.forEach(System.out::println); } }

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント