QueryDSL이란
- QueryDSL이란 SQL, JPQL 등을 코드로 작성할 수 있도록 해주는 빌더 오픈소스 프레임워크입니다.
QueryDSL JPA
- QueryDSL JPA은
- SQL, JPQL을 코드로 작성할 수 있도록 해주는 빌더 API입니다.
- Entity 클래스와 매핑되는 QClass라는 객체를 사용해서 쿼리를 실행합니다.
- QClass란
- QueryDSL은 컴파일 단계에서 엔티티를 기반으로 QClass를 생성하는데 JPAAnnotationProcessor가 컴파일 시점에 작동해서 @Entity 등등의 어노테이션을 찾아 해당 파일들을 분석해서 QClass를 만듭니다.
- QClass는 Entity와 형태가 똑같은 static Class입니다.
- QueryDSL은 쿼리를 작성할 때 QClass를 기반으로 쿼리를 실행합니다.
- JPQL이란
- JPA에서 지원하는 다양한 쿼리 방법 중 가장 단순한 조회 방법으로, SQL의 경우 DB 테이블을 대상으로 쿼리를 질의하지만, JPQL은 엔티티 객체를 대상으로 쿼리를 질의합니다.
- JPQL의 문제점
- 쿼리를 문자열로 입력합니다.
- 오타가 발생하거나 관리하는데 있어 어려움이 따르고 type check가 불가능합니다.
- 컴파일 단계에서 오류를 확인할 수 없고, 런타임에서 해당 쿼리가 실행되어야 오류를 발경할 수 있습니다.
- 테스트 코드를 짜면 불안을 덜 수 있긴 하지만, 실제 프로그램을 운영하면서 오류가 발생할 수 있다는 부담이 커집니다.
- 쿼리를 문자열로 입력합니다.
QueryDSL JPA 사용하는 이유
- QueryDSL은 쿼리를 문자열로서가 아닌 코드를 통해서 작성하기 때문에 오타가 날 확률이 적어지고, 객체 지향적으로 개발할 수 있습니다.
- QueryDSL은 코드로서 작성하기 때문에 컴파일 단계에서 오류를 빠르게 발견할 수 있습니다.
'JAVA > JPA' 카테고리의 다른 글
[JAVA / Spring / JPA] - SpringBoot(JPA) 구조 및 용어 (0) | 2024.07.19 |
---|---|
[Java / Spring / JPA] DB 컬럼에 List 데이터 추가하기 (0) | 2024.05.23 |
[Java / Spring / JPA] - JPQL이란 (0) | 2024.03.31 |
[JAVA / Spring / JPA] - JPA 기타 기능 (Cascade, orphanRemoval, Fetch) (0) | 2024.03.11 |
[JAVA / Spring / JPA] - JPA 정리 (0) | 2024.03.06 |