재밌고 어려운 IT를 이해해보자~!

QueryDSL 본문

개인공부

QueryDSL

언제나즐거운IT 2024. 10. 22. 14:04

QueryDSL이란?

QueryDSL은 하이버네이트 쿼리 언어(HQL: Hibernate Query Language)의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크이다!


QueryDSL은 정적 타입을 이용하여 SQL과 같은 쿼리를 생성할 수 있게 해준다.

자바 백엔드 기술은 Spring Boot와 Spring Data JPA를 함께 사용한다.

하지만 복잡한 쿼리, 동적 쿼리를 구현하는 데 있어 한계가 있다. 이러한 문제점을 해결할 수 있는 것이 QueryDSL이다.

QueryDSL이 등장하기 이전에는 Mybatis, JPQL, Criteria 등 문자열 형태로 쿼리문을 작성하여 컴파일 시에 오류를 발견하는 것이 불가능했다.
하지만 QueryDSL은 자바 코드로 SQL문을 작성할 수 있어 컴파일 시에 오류를 발생하여 잘못된 쿼리가 실행되는 것을 방지할 수 있다.

QueryDSL은 JPA 뿐만 아니라 SQL, MongoDB, Lucenece 등다양한 언어에 대해서 서비스를 제공

 

평소 프로젝트를 진행할땐 JPQL만 사용한 듯 하다

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 문법과 유사한 형태로 작성할 수 있어 쉽게 적응할 수 있다.

 

 

 

 

 

*참조

https://velog.io/@jinyeong-afk/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-QueryDSL%EC%9D%B4%EB%9E%80

'개인공부' 카테고리의 다른 글

AWS 무료서버 사용법  (4) 2024.10.27
AWS  (0) 2024.10.26
Maria DB  (0) 2024.10.14
EES  (0) 2024.08.23
CRM  (0) 2024.08.05
Comments