gradle 세팅
buildscript { ext { queryDslVersion = "5.0.0" } } plugins { ... id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } configurations { ... querydsl.extendsFrom compileClasspath // queryDsl } dependencies { ... implementation "com.querydsl:querydsl-jpa:${queryDslVersion}" implementation "com.querydsl:querydsl-apt:${queryDslVersion}" }
def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } compileQuerydsl { options.annotationProcessorPath = configurations.querydsl }
Config 파일 작성
@Configuration public class QueryDslConfig { @PersistenceContext private EntityManager entityManager; @Bean public JPAQueryFactory jpaQueryFactory() { return new JPAQueryFactory(entityManager); } }
QueryDsl 적용
- custom queryDsl repository interface 생성
public interface Query${Entity}Repository { // custom Method-Signature }
- queryDsl interface 구현체 작성
@Repository @RequiredArgsConstructor public class Query${Entity}RepositoryImpl implements Query${Entity}Repository { private final JPAQueryFactory jpaQueryFactory; // interface 구현 }
- JPA와 연동
public interface ${Entity}Repository extends JpaRepository<${Entity}, Long>, Query${Entity}Repository{ }