22/06/02 복잡한 쿼리의 작성과 응용

김석진·2022년 6월 2일
0

다시 초심으로

목록 보기
16/19

Querydsl vs Jooq

Querydsl

Unified Queries for Java. Querydsl is compact, safe and easy to learn

  • 자바 코드(엔티티) -> DB쿼리생성해주는 도구
  • HQL 생성해주는 라이브러리이다.
    • type-safety가 부족한 HQL(JPQL)의 대안
    • 읽기 어려운 Criteria API의 대안

Querydsl

Querydsl코드

  • 보다 읽기 쉬운 쿼리작성
  • 편리한 join 제공 (join메소드를 제공한다)
  • 스프링 Pageable과 매끄러운 연동
    Q는 Querydsl에서 자동으로 생성해주는 class이다.

Jooq

"jOOQ generates Java code from your database and lets you build type safe SQL queries through its fluent API

  • DB schema를 Java class로 바꿔주는 생성도구
  • ORM framework가 아님
  • "jOOQ is not a replacement for JPA"
    • SQL이 잘어울리는 곳에 Jooq가 잘맞다
    • Object Persistence가 잘 어울리는곳엔 JPA가 잘맞음
  • Jooq says: "Jooq+JPA"

사용해보기

Querydsl

JPQL 작성 라이브러리

  • Spring Data JPA와 조합하여 보다 복잡한 쿼리를 type-safe하게 작성 가능
    • 커스텀 key join 제공
    • 자유로운 query projection
  • Spring Data JPA Repository interface와 매끄럽게 연동
  • Spring Data에서 다양한 서포트 지원
    • QuerydslRepositorySupport: EntityManager를 노출하지 않고, Querydsl 필요 기능 직접 지원
    • QuerydslPredicateExcutor: Predicate을 이용한 dynamic select, Spring Data REST 지원
    • QuerydslBinderCustomizer: 파라미터 바인딩의 세부 기능 조절을 지원
profile
주니어 개발자 되고싶어요

0개의 댓글