본문 바로가기
JAVA/JOOQ

QueryDSL 과 JOOQ 비교

by 아이티.파머 2020. 10. 22.
반응형

2020/10/22 - [JAVA] - QueryDSL 과 JOOQ 비교

2020/10/22 - [JAVA/JOOQ] - JOOQ DSL(Domain Specific Language) 생성방법

2020/10/22 - [JAVA/JOOQ] - Spring Boot & Jooq

JAVA 에서 ORM 을 찾아보면 대부분 QueryDSL 과 JOOQ에 대해 언급한다.

이 두가지가 가장 ORM에 가깝다고 생각한다.

QueryDSL 과 JOOQ 두가지 모두 장단점이 존재 하는데, 이것에 대해 한번 비교해보고자 한다.

QueryDSL

먼저 QueryDSL은 Spring JPA를 이용하다보면 좀더 커스텀하고 타입 오류가 발생하지 않는 비지니스 로직을 짜길 원하게 되는데 이때 많이들 채택한다.

www.querydsl.com/

 

Querydsl - Unified Queries for Java

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

JPA 와 마찬가지로 Hibernate 를 사용한다. dsl 라이브러리를 이용하여 Q로 시작한는 Entity 클레스를 만들어주며 해당 엔티티들의 엔티티 패스를 이용해서 쿼리를 작성한다.

특징

  • 엔티티 도메인 클레스를 생성하여 디비스키마를 생성이 가능함,
  • 타입오류를 잡아주며, 자바 코드로 쿼리를 작성함.
  • Q가 붙은 엔티티의 엔티티패스를 이용하여 쿼리를 작성하기때문에 학습이 필요함.

 

JOOQ

유로와 무료 버전있다. mysql 과 miria db는 무료이다.
JOOQ DSL를 만들어 주어 DSL 클레스를 사용하여 쿼리를 작성한다.

https://www.jooq.org/

 

jOOQ: The easiest way to write SQL in Java

Typesafe SQL SQL is a very unique and rich language, optimally designed to express complex queries in a simple, declarative form. When writing SQL, you will focus on what data you want to fetch, not how you want to fetch it. jOOQ treats SQL like what it is

www.jooq.org

 

DSL 컨텍스트를 기반으로 SQL을 생성하여 사용한다.

특징

  • DSL 클레스를 생성하여 쿼리를 생성함.
  • DB 스키마를 기반으로 JAVA 도메인을 생성함.

JOOQ & QueryDSL 차이점

공통점은 많치만 차이점은 크게 찾아보기 어렵다. 성능 면에대한 차이를 비교하기엔 둘다 좋은 프레임웍임으로 굳이 비교할 필요는 없어 보인다.

굳이 두가지의 차이점을 찾아보자면 QueryDSL는 java 도메인을 생성해가며 스키마를 만든다고 보며, jooq는 만들어진 스키마를 바탕으로 java 도메인으로 만들어 사용한다. 둘다 편리하고, 자바코드로 쿼리를 생성함으로 타입 세이프하고 편리하게 쿼리를 작성하고 개발 할 수 있다.

 

반응형

'JAVA > JOOQ' 카테고리의 다른 글

JOOQ DSL(Domain Specific Language) 생성방법  (0) 2020.10.22
Spring Boot & Jooq  (0) 2020.10.22