본문 바로가기

Spring

QueryDSL

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 설정

https://velog.io/@juhyeon1114/Spring-QueryDsl-gradle-%EC%84%A4%EC%A0%95-Spring-boot-3.0-%EC%9D%B4%EC%83%81

 

[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

 

'Spring' 카테고리의 다른 글

JPA에서 N+1 문제  (0) 2023.06.14
JPA의 Transactional  (0) 2023.05.15
Spring Security  (0) 2023.04.28