QueryDSL이란?
- JPA, SQL, MongoDB, Lucene 등 다양한 데이터 접근 기술에 대한 도메인 특화 언어(DSL)을 제공하는 오픈 소스 프레임워크
특징
- 정적 타입 안전
- 컴파일 시점에 쿼리 오류를 확인하여 안전하고 유지 관리가 용이한 코드를 작성할 수 있다.
- 코드 간결성
- SQL과 유사한 문법을 사용하여 직관적이고 간결한 쿼리를 작성할 수 있다.
- 유연성
- 다양한 쿼리 조건, 정렬, 페이징 등을 쉽게 구현할 수 있다.
- 코드 재사용
- 작성된 쿼리를 다른 쿼리에서 재사용할 수 있다.
사용 방법
- QueryDSL 라이브러리 추가
- 프로젝트에 QueryDSL 라이브러리를 추가한다.
- Q-Type 생성
- 엔티티 클래스에 대한 Q-Type 클래스를 자동으로 생성한다.
- 쿼리 작성
- Q-Type 클래스를 사용하여 SQL과 유사한 문법으로 쿼리를 작성한다.
- Repository에서 활용
- 쿼리를 Repository 메서드에서 사용한다.
Q-Type?
- QueryDSL에서 사용되는 전용 클래스
- QueryDSL이 엔티티 클래스를 가공해서 Q-Type 클래스를 생성해준다.
- 엔티티 클래스명 앞에 Q가 붙는 형태
- 예시 : Member 엔티티는 QMember, Team 엔티티는 QTeam이 된다.
주의 사항
- QueryDSL은 JPA, SQL, MongoDB, Lucene 등 다양한 데이터 접근 기술을 지원한다.
- 다만, 각 기술에 대한 특정 기능은 지원하지 않을 수 있다.
- QueryDSL을 사용하기 위해서는 JPA, SQL, MongoDB, Lucene 등에 대한 기본적인 이해가 필요하다.