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: 파라미터 바인딩의 세부 기능 조절을 지원