영한님의 jOOQ에 대한 생각도 궁금합니다. jpa를 배워야 할 이유로 사용되었던 근거자료인 전 세계 구글트렌드에서도 jOOQ가 querydsl에 밀리지 않으면서(미국에선 8:2) 한국에서만 querydsl이 많이 사용되는 듯 한데 이러한 이유가 궁금합니다.
가볍게 조사해본 결과 jOOQ는 계속해서 업데이트가 되는데 querydsl은 사장되어간다는 말도 있더라구요. (업데이트가 안되는 이유가 만약 워낙 완성된 오픈소스 프로젝트라면 다행이지만 다른 이유라면 이라는 생각을 해보았습니다.)
현재로서는 로드맵을 따라 querydsl만 공부하는 입장이고 jOOQ는 입문하지 않은 상태인데요. 강의자체가 20년도 강의다보니까 현재의 의견이 어떻게 되시는지 궁금합니다.
미국에서는 왜 jOOQ가 더 인기가 많은걸까요?, 정말 querydsl은 최근 들어서 사장되어가는 기술인가요?
한국도 querydsl기술인기가 jOOQ로 넘어갈까요? 둘 다 배우면 개발자 입장에서 훌륭하겠지만 단순히 궁금해져서 질문을 올려봐요.
안녕하세요. 영한노게임님
두 기술은 다른 기반을 가지고 있기 때문에 둘을 비교하는 것은 맞지 않습니다.
jOOQ의 경우에는 SQL 자체를 편리하게 만드는 것이 목적이고, Querydsl의 경우 JPA의 JPQL을 편리하게 만드는 것이 목적입니다. (Querydsl이 다양한 목표를 가지고 만들어졌지만 실질적으로 JPQL에 주로 사용됩니다.)
jOOQ는 데이터베이스 테이블을 기반으로 쿼리용 파일을 만들어냅니다. 반면에 Querydsl은 JPA 자바 엔티티 객체를 기반으로 쿼리용 파일을 만들어냅니다.
따라서 만약 JPA를 사용하지 않는다면 MyBatis 또는 jOOQ를 사용하시면 되고, JPA의 JPQL을 편리하게 다루고 싶다면 Querydsl을 사용하시면 됩니다.
두 기술 다 기존에 있는 SQL이나 JPQL을 자바 코드로 편리하게 만드는 것이 목적이기 때문에 사실은 두 기술 자체 보다는 SQL이나 JPQL을 어떻게 다루어야 하는지를 근본적으로 더 잘 아는 것이 중요합니다.
이것은 저의 생각이지만 국내에서는 SQL을 다루는 기술에서 MyBatis가 큰 우위를 점하고 있어서, jOOQ를 사용하는 곳을 찾기 어렵다 생각합니다.
jOOQ를 사용할 때와 JPA + Querydsl을 사용할 때 비교
jOOQ는 데이터베이스 테이블을 기반으로 쿼리용 파일을 생성하고 사용합니다. 이때 오랜 시간이 걸립니다. 그리고 데이터베이스 테이블과 소스 코드간에 차이를 빠르게 발견하기 어렵습니다. 반면에 JPA + Querydsl의 조합의 경우 JPA 엔티티 자바 코드를 기반으로 매우 빠르게 쿼리용 파일을 생성합니다. 결과적으로 개발자가 엔티티의 변경 사항을 바로바로 확인하고 고칠 수 있습니다.
Querydsl 버전 업 관련
Querydsl의 경우 버전업이 매우 늦게 진행되고 있습니다. 이 부분을 개선하기 위해 OpenFeign에서 querydsl을 포크해서 버전업을 진행하고 있습니다.
https://github.com/OpenFeign/querydsl
저도 이런 부분에 아쉬움은 있지만, Querydsl은 단순히 JPQL을 자바 코드로 편하게 만들어주는 도구에 불과합니다. JPQL이 이미 완성에 가까운 기술이어서 더는 문법의 변경이나 기능의 추가가 거의 없는 상태입니다. 따라서 Querydsl의 버전이 빠르게 발전하지 않는다고 해도 크게 문제가 되는 상황은 아닙니다.
감사합니다.
답글
권도균
2024.11.12좋은 비교, 좋은 글
mybatis와 비교를 하는 것이 맞았네요. 좋은 설명 감사드려요:)
답글