🖊 QueryDsl 이란?
JPA로 동적 쿼리를 작성하는데 유지보수에 큰 문제가 있어서 이를 해결하기 위해 만들어진 오픈소스 프로젝트
🖊 QueryDsl 예시
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'com.querydsl:querydsl-jpa:5.0.0'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:general'
}
// 원하는 엔티티에 @QueryEntity를 달아주고 컴파일
// 사용하는 리포지토리에 JPAQueryFactory 객체를 만들어준다.
// Q엔티티를 만들면 다음과 같이 사용할 수 있다.
query.select(order)
.from(order)
.join(order.member, member)
.where(statusEq(orderSearch.getOrderStatus())
, nameLike(orderSearch.getMemberName()))
.limit(1000)
.fetch();
🖊 사용 이유
- 직관적인 문법(자바)
- 컴파일 시점에 오류를 잡아준다.(자바)
- 자동 완성 사용 가능.(자바)
- 코드 재사용 가능.(동적 쿼리에 큰 이점이 된다.)