[JPA]limitではなくページング


QueryDSLでは、limitを使用してフルスキャン後にメモリにロードし、制限することができます.
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を行うことができる.(表示)