Querydsl이란?
- 하이버네이트 쿼리 언어의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크
- 정적 타입을 이용해 SQL과 같은 쿼리를 생성하게 해줌
- Spring Boot와 Spring Data JPA를 함께 사용할 때, 복잡한 쿼리, 동적 쿼리를 구현하는 한계를 해결할 수 있음
JPQL과 Querydsl 비교
JPQL
String username = "java";
String jpql = "select m from Member m where m.username = :username";
List<Member> result = em.createQuery(query, Member.class).getResultList();
JPQL의 문제점
- 타입 안정성이 떨어짐
- 직관적인 동적 쿼리 작성이 어려움
- JPQL은 문자열임(문법이 틀려도 개발자가 알아차리기 쉽지 않음)
Querydsl
String username = "java";
List<Member> result = queryFactory
.select(member)
.from(member)
.where(usernameEq(username))
.fetch();
출처: https://ittrue.tistory.com/292 [IT is True:티스토리]
Querydsl 장점
- 문자가 아닌 코드로 쿼리를 작성할 수 있어 컴파일 시점에 문법 오류를 확인할 수 있음
- 인텔리제이와 같은 IDE의 자동 완성 기능의 도움을 받을 수 있음
- 복잡한 쿼리나 동적 쿼리 작성이 편리
- 쿼리 작성 시 제약 조건 등을 메서드 추출을 통해 재사용할 수 있음
- JPQL 문법과 유사한 형태로 작성할 수 있어서 쉽게 적응 가능