인프런 - 실전! 스프링 데이터 JPA


도메인 클래스 컨버터

  • HTTP 파라미터로 넘어온 엔티티의 아이디로 엔티티 객체를 찾아서 바인딩

 

1. 컨트롤러 작성

 

2. 접속 확인

 

3.  컨트롤러 - member2 추가

 

4. 확인

쿼리 자체는 id 값을 조건으로 조회한다.

결론
HTTP 요청은 회원 id 를 받지만, 도메인 클래스 컨버터가 중간에 동작해서 회원 엔티티 객체를 반환
도메인 클래스 컨버터도 리파지토리를 사용해서 엔티티를 찾음

주의: 도메인 클래스 컨버터로 엔티티를 파라미터로 받으면, 이 엔티티는 단순 조회용으로만 사용해야 한다.
(트랜잭션이 없는 범위에서 엔티티를 조회했으므로, 엔티티를 변경해도 DB에 반영되지 않는다.)

페이징과 정렬

예제

1. 컨트롤러 페이징 추가

2. 확인

요청 파라미터
예) /members?page=0&size=3&sort=id,desc&sort=username,desc

page: 현재 페이지, 0부터 시작한다.
size: 한 페이지에 노출할 데이터 건수
sort: 정렬 조건을 정의한다. 예) 정렬 속성,정렬 속성...(ASC | DESC),
       정렬 방향을 변경하고 싶으면 sort 파라미터 추가 ( asc 생략 가능 )

 

기본값 설정

1. 글로벌 설정

 application.yml 에 추가
 
 data:
    web:
      pageable:
        default-page-size: 10
        max-page-size: 2000

2. 개별설정

@PageableDefault 어노테이션 사용

 

접두사

  • 페이징 정보가 둘 이상이면 접두사로 구분
  • @Qualifier 에 접두사명 추가 "{접두사명}_xxx”
public String list(
 @Qualifier("member") Pageable memberPageable,
 @Qualifier("order") Pageable orderPageable, ...

 

페이지 내용을 DTO로 변환하기

  • 엔티티를 외부 API에 노출하면 안된다.

 

+ Recent posts