[4] 스프링 부트와 JPA 활용 (4) - 동적 쿼리 (JPQL vs Criteria vs QueryDSL)
동적 쿼리
[ Intro ]
-
동적 쿼리
?
: 같은 기능
을 하지만 동적으로 들어오는 파라미터
에 의해 조건
이 바뀌게 설계
되는 쿼리
ex) 검색 기능
구현시 값
이 없으면 전체 정보
, 있으면 맞는 정보
를 반환
- 방법
순수 JPQL
Criteria
QueryDSL
- 살펴 볼 예시
: Member.name
과 Order.status
정보에 따른 검색 기능
데이터가 반드시 넘어온다면
이렇게 처리할 수 있음
데이터가 null값으로 넘어오는 경우
에는 동적 쿼리
로 작성해야 함
[ 순수 JPQL ]
jpql
을 문자열
로 만든 뒤 조건
에 따라 jpql
에 string
을 추가
하는 방식
--> jpql
에 띄어쓰기 하나
라도 틀리면 오류
발생
-
isFirstCondition
변수로 각각 null값인지 검사하면 첫번째 조건인지 확인
[ Criteria ]
Criteria
는 Spring의 표준 스펙
이지만 실무에서 사용 X
사용성
이 복잡
해서 어떤 쿼리
가 나가는지 도무지 파악 X
[ QueryDSL ]
- 자세한
QueryDSL
은 뒤에서 다루겠지만 확실히 가시성
과 사용성
이 좋아보임