[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은 뒤에서 다루겠지만 확실히 가시성과 사용성 이 좋아보임