728x90
도메인 클래스 컨버터
HTTP 파라미터로 넘어온 엔티티의 아이디로 엔티티 객체를 찾아서 바인딩

- HTTP 요청은 회원 id를 받지만 도메인 클래스 컨버터가 중간에 동작해서 회원 엔티티 객체를 반환
- 도메인 클래스 컨버터도 리파지토리를 사용해서 엔티티를 찾음
주의
도메인 클래스 컨버터로 엔티티를 파라미터로 받으면, 이 엔티티는 단순 조회용으로만 사용해야 한다. (트랜잭션이 없는 범위에서 엔티티를 조회했으므로, 엔티티를 변경해도 DB에 반영되지 않는다.)
페이징과 정렬
스프링 데이터가 제공하는 페이징과 정렬 기능을 스프링 MVC에서 편리하게 사용할 수 있다.


- 파라미터로 Pageable 을 받을 수 있다.
- Pageable 은 인터페이스, 실제는 org.springframework.data.domain.PageRequest 객체 생성
- 요청 파라미터
- page: 현재 페이지, 0부터 시작한다.
- size: 한 페이지에 노출할 데이터 건수
- sort: 정렬 조건을 정의한다.
- 예) 정렬 속성,정렬 속성...(ASC | DESC), 정렬 방향을 변경하고 싶으면 sort 파라미터 추가 ( asc 생략 가능)
기본값 변경
요청 파라미터의 기본값은 SpringBoot에서 다 설정되어 있으면 변경하고 싶을경우 아래와 같은 방법을 사용하면 된다.
글로벌 설정

- yml 수정하여 글로벌 설정을 변경한다.
해당 메서드만 특별한 설정

- @PagealbeDefault를 사용해서 설정가능
- 메소드마다 특별하게 설정이 가능하다.
접두사

- 페이징 정보가 둘 이상이면 접두사로 구분
- @Qualifier에 접두사명 추가 "{접두사명}_xxx”
- 예제: /members? member_page=0&order_page=1
Page 내용을 DTO로 변환하기


- 엔티티를 API로 노출하면 다양한 문제가 발생한다. 그래서 엔티티를 꼭 DTO로 변환해서 반환해야 한다.
- Page는 map()을 지원해서 내부 데이터를 다른 것으로 변경할 수 있다.
Page를 1부터 시작하기
SpringDataJPA 는 Page를 0부터 시작한다. -> 1부터 시작하기 위해서는?
- Pageable, Page를 파리 미터와 응답 값으로 사용 히지 않고, 직접 클래스를 만들어서 처리한다. 그리고 직접 PageRequest(Pageable 구현체)를 생성해서 리포지토리에 넘긴다.
- 물론 응답 값도 Page 대신에 직접 만들어서 제공해야 한다.
- spring.data.web.pageable.one-indexed-parameters를 true로 설정한다.
- 이 방법은 web에서 page 파라미터를 -1 처리할 뿐이다. 따라서 응답 값인 Page에 모두 0 페이지 인덱스를 사용하는 한계가 있다
- yml이나 properties에 작성한다.
728x90
'실전! 스프링 데이터 JPA' 카테고리의 다른 글
| Ch05. 스프링 데이터 JPA 분석 - 새로운 엔티티를 구별하는 방법 (0) | 2021.12.28 |
|---|---|
| Ch05. 스프링 데이터 JPA 분석 - SpringDataJPA 구현체 분석 (0) | 2021.12.28 |
| Ch04. 확장 기능 - Auditing (0) | 2021.12.27 |
| Ch04. 확장 기능 - 사용자 정의 리포지토리 구현 (0) | 2021.12.27 |
| Ch03. 쿼리 메소드 기능 - JPA Hint, Lock (0) | 2021.12.26 |