0802 학습 정리
✅ QueryDSL 주요 문법 요약
📌 기본 문법
JPAQueryFactory: QueryDSL의 쿼리 생성을 담당하는 핵심 객체
Q도메인클래스: QueryDSL이 도메인 클래스에 대해 생성한 쿼리 타입 클래스 (예: QIdol)
📌 기본 조회 방식
factory.selectFrom(idol).fetch();
factory.select(idol.idolName).from(idol).fetch();
📌 where 조건절
.where(idol.idolName.eq("사쿠라"))
.where(idol.age.between(20, 30))
📌 and, or 조건
.where(idol.idolName.eq("김채원").and(idol.age.gt(20)))
📌 정렬
.orderBy(idol.age.asc(), idol.idolName.desc())
📌 페이징
.offset(0).limit(5)
📌 fetch 종류
fetch(): 리스트 반환
fetchOne(): 단일 객체 반환 (결과가 2개 이상이면 예외 발생)
fetchFirst(): 첫 번째 결과만 반환
✅ QueryDSL 연관관계 조회
▶ Join 조회
factory.selectFrom(idol)
.join(idol.group, group)
.where(group.groupName.eq("아이브"))
.fetch();
▶ Fetch Join (지연로딩 방지)
factory.selectFrom(idol)
.join(idol.group, group).fetchJoin()
.fetch();
▶ N+1 문제 해결
fetchJoin()을 통해 join한 엔티티도 한 번에 같이 조회됨 → 쿼리 1번만 실행됨
✅ 정리 요약
- QueryDSL은 JPQL을 타입 안전하게 Java 문법으로 작성할 수 있도록 도와줌
- 조건, 정렬, 페이징, fetch 타입 등 다양한 SQL 패턴을 지원
- 연관관계 조회, Fetch Join 등을 통해 성능 최적화 가능
- 실무에서도 repository layer에서 QueryDSL을 자주 사용함