동적 쿼리와 성능 최적화 조회

Builder 사용

조회 최적화용 DTO 추가

@Data
public class MemberTeamDto {

    private Long memberId;
    private String username;
    private int age;
    private Long teamId;
    private String teamName;

    @QueryProjection
    public MemberTeamDto(Long memberId, String username, int age, Long teamId,
                         String teamName) {
        this.memberId = memberId;
        this.username = username;
        this.age = age;
        this.teamId = teamId;
        this.teamName = teamName;
    }
}
  • @QueryProjection을 추가했다.

    • QMemberTeamDto를 생성하기 위해 ./gradlew compileQuerydsl을 실행한다.

  • 이 방식은 DTO가 Querydsl 라이브러리에 의존하게 된다는 단점이 있다.

    • 싫다면 애너테이션을 삭제하고 아래 중 하나를 사용한다.

      • Projection.bean()

      • fields()

      • constructor()

회원 검색 조건

동적 쿼리 구현

테스트

  • condition에 조건이 아무것도 들어가지 않으면 모든 데이터를 끌고 온다.

  • 운영에서는 데이터가 많기 때문에 기본 조건이 있거나 limit이라도 있어야 한다.

Where절에 파라미터 사용

  • Builder에 비해 가독성이 좋다.

메서드 재사용

  • where 절에서 만들어놨던 메서드를 재사용할 수 있다.

Last updated

Was this helpful?