본문 바로가기

Pageable4

일대다(1:N) 페이징 처리(OneToMany Pagination) 일대다(1:N) 페이징 처리(Spring Data JPA) TL;DR 1:N 연관관계인 두 엔티티가 즉시 로딩된다면 (엔티티 그래프나 fetch join 으로 연결되어 있다면) 페이징 처리시 쿼리에 limit 가 붙지 않고 모든 데이터가 메모리에 불러와진다. 페이징 처리를 위해서는 연관된 컬렉션을 한꺼번에 가져올 배치 사이즈를 정한다. (예시: 100개로 정하기) spring: jpa: properties: hibernate: default_batch_fetch_size: 100 요구사항 어드민 화면에서 모든 사용자의 주문내역을 불러오는 화면이 필요합니다. 우리는 수많은 주문들을 한 화면에 불러오기 보다는 페이징 처리를 통해 한번에 필요한 갯수만큼 가져오겠습니다. Entity 연관관계 주문과 주문상품이 .. 2021. 11. 28.
Spring Data Common - Web 기능 Spring Data JPA - Web 스프링 데이터는 다양한 웹 지원 기능을 제공한다. 스프링부트를 사용할 시 모든 것이 자동 설정된다. 일반 스프링을 사용하는 경우 자바 설정 파일에 @Configuration 과 함께 @EnableSpringDataWebSupport 를 붙이면 된다. Spring Data 가 지원하는 여러 웹 기능을 알아보자. 도메인 클래스 컨버터 Pageable, Sort @RequestHandler 메소드에서 Pageable, Sort 매개변수를 사용할 수 있다. HATEOAS 또한 Page 관련해서 HATEOAS 기능을 제공한다. HATEOAS 란 Hypermedia As The Engine Of Application State 의 약자로 쉽게 말해, 리소스 자원의 위치(uri.. 2021. 2. 10.
Spring Data Common - 쿼리(Query) Spring Data JPA - Spring Data Common Query Spring Data 저장소의 메소드 이름으로 쿼리를 만들 수 있다. 1) 메소드 이름을 분석해서 쿼리를 만든다. (CREATE) 2) 미리 정의해 둔 쿼리를 찾아 사용한다. (USE_DECLARED_QUERY) 3) 미리 정의한 쿼리를 찾아보고 없으면 생성한다. (CREATE_IF_NOT_FOUND) 아래와 같이 설정할 수 있다. @SpringBootApplication @EnableJpaRepositories(queryLookupStrategy = QueryLookupStrategy.Key.CREATE_IF_NOT_FOUND) public class Application { ... 기본값은 CREATE_IF_NOT_FOUND.. 2021. 2. 9.
Spring REST API - 조회 테스트 Spring REST API - 조회 이벤트 목록 조회 이벤트 목록은 조회하는 API를 만들어보자 우선 만들 요건은 Event 30개가 담긴 목록이다. 각 이벤트는 Page 정보를 담고 있다. TDD 방식으로 먼저 테스트 작성 후 그에 맞는 소스코드를 만든다. @Test @DisplayName("30개의 이벤트를 10개씩 묶어서 두번재 페이지 조회") public void queryEvents() throws Exception { // Given IntStream.range(0, 30).forEach(this::generateEvent); // When this.mockMvc.perform(get("/api/events") .param("page", "1") .param("size", "10") .par.. 2021. 1. 28.
728x90