Spring
QueryDSL
옴악핫세
2023. 5. 15. 12:30
QueryDSL이란?
QueryDSL은 하이버네이트 쿼리 언어를 타입에 안전하게 생성 및 관리해주는 프레임워크
QueryDSL은 정적 타입을 이용하여 SQL과 같은 쿼리를 생성할 수 있게 해줌
JPA에서는 복잡한 쿼리, 동적 쿼리를 구현하는 데 있어 한계가 있음
이러한 문제점을 해결할 수 있는 것이 QueryDSL
특히
QueryDSL로 자바 코드로 SQL문을 작성할 수 있어 컴파일 시에 오류를 발견하는 것도 가능하게됨
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();
- QueryDSL
String username = "java";
List<Member> result = queryFactory
.select(member)
.from(member)
.where(usernameEq(username))
.fetch();
QueryDSL 장점
1. 문자가 아닌 코드로 쿼리를 작성할 수 있어 컴파일 시점에 문법 오류를 확인할 수 있음
2. 인텔리제이와 같은 IDE의 자동 완성 기능의 도움을 받을 수 있음
3. 복잡한 쿼리나 동적 쿼리 작성이 편리함
4. 쿼리 작성 시, 제약 조건등을 메서드 추출을 통해 재사용할 수 있음
5. JPQL 문법과 유사한 형태롤 작성할 수 있어 쉽게 적응 가능
참고
1.QueryDsl gradle 설정
[Spring] QueryDsl gradle 설정 (Spring boot 3.0 이상)
스프링 부트 3.0이상에서의 Querydsl 설정방법
velog.io
https://velog.io/@jkijki12/Spring-QueryDSL-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0