[4] 스프링 부트와 JPA 활용 (4) - 동적 쿼리 (JPQL vs Criteria vs QueryDSL)

김정욱·2021년 3월 18일
1
post-thumbnail

동적 쿼리

[ Intro ]

  • 동적 쿼리?
    : 같은 기능을 하지만 동적으로 들어오는 파라미터에 의해 조건바뀌게 설계되는 쿼리
    ex) 검색 기능 구현시 이 없으면 전체 정보, 있으면 맞는 정보를 반환
  • 방법
    • 순수 JPQL
    • Criteria
    • QueryDSL
  • 살펴 볼 예시
    : Member.nameOrder.status 정보에 따른 검색 기능
    • 데이터가 반드시 넘어온다면 이렇게 처리할 수 있음
    • 데이터가 null값으로 넘어오는 경우에는 동적 쿼리로 작성해야 함

[ 순수 JPQL ]

  • jpql문자열로 만든 뒤 조건에 따라 jpqlstring추가하는 방식
    --> jpql띄어쓰기 하나라도 틀리면 오류발생
  • isFirstCondition 변수로 각각 null값인지 검사하면 첫번째 조건인지 확인

[ Criteria ]

  • CriteriaSpring의 표준 스펙이지만 실무에서 사용 X
  • 사용성복잡해서 어떤 쿼리가 나가는지 도무지 파악 X

[ QueryDSL ]

  • 자세한 QueryDSL은 뒤에서 다루겠지만 확실히 가시성사용성 이 좋아보임

profile
Developer & PhotoGrapher

0개의 댓글