QueryDsl의 여러 사용방법

권성현·2023년 2월 11일
0

면접 준비

목록 보기
30/30
post-custom-banner

[QueryDsl] 쿼리 최적화

이를 수행하게 된 계기는 같은 팀원의 제안으로 시작하게 되었고, 그 팀원으로부터 많은 것을 배웠다.

팀원이 어떻게 수행했으며 어떤 과정을 거쳤는지 물어보았고, 획기적인 생각에 좀 더 공부해보고 싶다는 생각이 들었다.

그 팀원에게 배원 지식을 공유하고 공부한 내용을 적어보겠다.

팀원에게 SQL의 중요성을 배웠고, 프로래머스를 통해 틈틈이 SQL 문제를 풀이하고있다.

기본적으로 QueryDsl을 사용하기 위해선 SQL공부가 필수적이였고, DBeaver를 통해 SQL을 작성 후 정상작동이 되면 QueryDsl 로직을 만들었다.

단순히 QueryDsl은 동적 검색기능으로만 생각했다.
하지만 조금만 깊게 찾아보니 내 생각이 잘못되었다는 걸 깨닫고 QueryDsl의 여러 사용방법 중 하나인 projection 사용 방법을 기록하고자 한다.

1.@QueryProjection를 이용하면 위에서 발생한 불변 객체 선언, 생성자 그대로 사용을 할 수 있어 권장하는 패턴입니다.
그래서 IDE의 자동완성 기능을 이용해서 보다 안전하고 편리하게 생성자에 필요한 값 바인딩을 진행할 수 있습니다. 그래서 가장 권장하는 패턴입니다.
Projections.fields 방식은 dto에서 정의한 필드의 이름과 select절에서의 각 필드명이 일치해야 한다.
만약 일치할 수 없는 상황이라면 .as("별칭")을 주면 된다.

물론 단점도 있습니다. Dto라는 특성상 해당 객체는 많은 계층에서 사용하게 됩니다.
그렇게 되면 Querydsl의 의존성이 필요 없는 레이어에서도 해당 의존성이 필요하게 됩니다.

왜 1번 .fields방법으로 많이 사용하는지 알고 써야겠다.

profile
개발일지
post-custom-banner

0개의 댓글