Skip to content

Latest commit

 

History

History
34 lines (31 loc) · 1.68 KB

QueryDSL.md

File metadata and controls

34 lines (31 loc) · 1.68 KB

QueryDSL

  • SQL, JPQL코드로 작성할 수 있도록 도와주는 빌더 API
  • JPA Criteria에 비해서 편리하고 실용적
  • 오픈소스

SQL, JPQL의 문제점

  • SQL, JPQL은 문자열이다 -> Type-Check가 불가능하다.
  • 컴파일 시점에 알 수 있는 방법이 없다. -> 문자열
  • 해당 로직 실행 전까지 작동 여부를 확인을 할 수 없다.
  • 해당 쿼리 실행 시점에 오류를 발견한다.

QueryDSL 장점

문자가 아닌 코드로 작성가능하다

  • 컴파일 시점에 문법 오류 발견
  • 코드 자동완성(IDE 도움)
  • 단순하고 쉽다.(코드 모양이 JPQL과 거의 비슷하다)
  • 동적 쿼리

실무 경험 공유

  • 수 조 단위의 정산을 하는데, JPA로 다 처리
  • 크리티컬한 결제 같은 시스템도 JPA로 처리
  • SpringBoot + JPA + QueryDSL 기본으로 깔고간다.
  • 유연한 DB변경(ex. MySQL -> Oracle)의 장점과 테스트
    • Junit 통합 테스트시 H2 DB 메모리 모드로 돌려서 사용
    • 로컬 PC에는 H2 DB 서버 모드로 실행
    • 개발 운영은 MySQL, Oracle로 한다.
    • DB 방언을 설정만 바꾸면 가능한 일
  • 테스트, 통합 테스트시 CRUD를 믿고간다.(내가 짠 쿼리는 그것을 마저 테스트를 거쳐가야한다.)

    CRUD 테스트 할 시간에 핵심 비즈니스 테스트 코드를 열심히 짜자

  • 빠른 에러발견
    • 쿼리 떄문에 문제가 발생x
    • 컴파일 시점에 대부분 오류 발견, 늦어도 애플리케이션 로딩 시점에 발견
    • 최소한 쿼리 문법 실수나 오류는 거의 발생x
  • 대부분이 비즈니스 로직의 오류