- JPA Query Methods를 사용하면 점점 메서드 이름이 지나치게 길어져서 가독성 떨어짐
- JPA Query Methods와 JPQL은 실행 전(컴파일 타임)에
기본적인 오류조차 확인하기 힘듦 (❌ Type-safe)
QueryDsl은 조건이 길어질 때, 즉, Querymethod로 충족되지 않을 때 사용한다.
queryDsl을 사용하기 위해서는 몇가지 설정이 필요하다.
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
Rebuild project 후 .build->.generated->sources->->... Q~~가 있는지 확인해본다.
없으면 안돼... 있어야해...
JpaConfig 라는 파일을 만든다.
이거는 queryDsl을 사용할 때 JPAQueryFactory을 사용할 수 없다. 따라서 이걸 사용해주기 위한 파일이다.
import com.querydsl.jpa.impl.JPAQueryFactory;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@EnableJpaAuditing
@Configuration
public class JpaConfig {
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(entityManager);
}
}