
@Query 어노테이션의 단점은 컴파일 시점에 에러를 발견할 수 없다는 것이다. 또한 spring boot를 사용할 때 주로 spring data JPA를 함께 사용하는데 복잡한 쿼리, 동적 쿼리를 구현하는 데는 한계가 있다.
이를 보완하기 위한 방법으로 Querydsl이 있다.
Querydsl은 JPQL을 코드로 작성할 수 있도록 도와주는 빌더 API이다.
✔️ 장점
✔️ 설정방법
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
✔️ 사용방법
1. 우선 Qclass를 만들어야한다.

2. 적용
private JPAQueryFactory queryFactory;
public ItemRepositoryCustomImpl(EntityManager em){
this.queryFactory = new JPAQueryFactory(em);
}
private BooleanExpression searchSellStatusEq(ItemSellStatusEnum searchSellStatus){
return searchSellStatus == null ? null
: QItem.item.itemSellStatus.eq(searchSellStatus);
}
🔺 Qclass import 가 안된다면?
file>project structure> Qclass 폴더 클릭 후 source 클릭