[JPA]limitではなくページング
QueryDSLでは、limitを使用してフルスキャン後にメモリにロードし、制限することができます.
OneToOneまたはManyToOneは、Emager Loadingを使用しても大きな問題はありません.
OneToManyは重大な問題に直面する可能性があります(->警告).
最初は何気なくすべてのものをメモリに入れていたという問題があります.
こういうときはPagingでPagingクエリを使用すると、query自体に制限が与えられます.
Jpa RepositoryはPaging Repositoryの継承者であり、直接Pagingを行うことができる.(表示)
OneToOneまたはManyToOneは、Emager Loadingを使用しても大きな問題はありません.
OneToManyは重大な問題に直面する可能性があります(->警告).
最初は何気なくすべてのものをメモリに入れていたという問題があります.
こういうときはPagingでPagingクエリを使用すると、query自体に制限が与えられます.
Pageable pageable = PageRequest.of(0, 3, Sort.by(Sort.Direction.ASC, "id"));
Page<Instagram> all = instagramRepository.findAll(pageable);
List<Instagram> content = all.getContent();
assertThat(content).hasSize(3);
assertThat(content.get(0).getId()).isEqualTo(1L);
assertThat(content.get(1).getId()).isEqualTo(2L);
assertThat(content.get(2).getId()).isEqualTo(3L);
Hibernate:
select
instagram0_.instagram_id as instagra1_4_,
instagram0_.created_date as created_2_4_,
instagram0_.modified_date as modified3_4_,
instagram0_.hashtag_count as hashtag_4_4_,
instagram0_.hashtag_name as hashtag_5_4_,
instagram0_.name as name6_4_,
instagram0_.place_id as place_id7_4_
from
instagram instagram0_
order by
instagram0_.instagram_id asc limit ?
Jpa RepositoryはPaging Repositoryの継承者であり、直接Pagingを行うことができる.(表示)
Reference
この問題について([JPA]limitではなくページング), 我々は、より多くの情報をここで見つけました https://velog.io/@moonyoung/JPA-Full-Scan하지-않고-limit하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol