TIL

🧶QueryDSL을 알아보자

초비비 2025. 2. 17. 21:41

 

QueryDSL이라.. 이 녀석도 처음임..ㅎ

 

우선 세팅을 먼저 진행해보자!

Gradle 추가

//QueryDSL의 버전 //plugin 보다 앞에 둘 것
buildscript {
	ext {
		queryDslVersion = "5.0.0"
	}
}

dependencies {
	//QueryDSL JPA 라이브러리
	implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
	// QueryDSL APT(Annotation Processing Tool)
	annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
	//Jakarta Annotation API
	annotationProcessor "jakarta.annotation:jakarta.annotation-api"
	// Jakarta Persistence API
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

//Q타입 클래스 디렉토리 경로
def generated = 'src/main/generated'

//'generated' 디렉토리에 저장
tasks.withType(JavaCompile) {
	options.getGeneratedSourceOutputDirectory().set(file(generated))
}

//generated 디렉토리를 메인 소스에 추가하여 컴파일에 포함
sourceSets {
	main.java.srcDirs += [ generated ]
}

//clean 시 generated 디렉토리를 삭제
clean {
	delete file(generated)
}
  • gradle clean > build
    • Q클래스 생성된 걸 확인할 수 있음

.gitignore

src/main/generated
  • src/main/generated 디렉토리는 자동으로 생성된 파일들이므로, 버전 관리에 포함할 필요가 없음

QueryDslConfig 생성

@Configuration
@RequiredArgsConstructor
public class QueryDslConfig {

    private final EntityManager em;

    @Bean
    public JPAQueryFactory jpaQueryFactory(){
        return new JPAQueryFactory(em);
    }
}