๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

Spring Boot 3.x ์ด์ƒ, Gradle 8.x ์ด์ƒ ํ™˜๊ฒฝ์—์„œ QueryDSL 5.x๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ,
์œ„์™€ ๊ฐ™์ด ์˜์กด์„ฑ๊ณผ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค์ •ํ•˜๋ฉด
Q ํด๋ž˜์Šค๊ฐ€ src/main/generated ๋””๋ ‰ํ† ๋ฆฌ์— ์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

1.์˜์กด์„ฑ ์ถ”๊ฐ€ build.gradle

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"

 

2. qํด๋ž˜์Šค ์ƒ์„ฑ build.gradle

def querydslDir = "src/main/generated"

sourceSets {
    main.java.srcDirs += [ querydslDir ]
}

tasks.withType(JavaCompile).configureEach {
    options.getGeneratedSourceOutputDirectory().set(file(querydslDir))
}

clean.doLast {
    file(querydslDir).deleteDir()
}

 

3. gradle clean and build or compileJava ํ•˜๋ฉด

Qํด๋ž˜์Šค๋“ค์ด main/generated๋ฐ‘์— ์ƒ์„ฑ๋œ๋‹ค.

 

4. QuerydslConfig ์ž‘์„ฑ

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;

@Configuration
public class QuerydslConfig {

    @PersistenceContext
    private EntityManager em;

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

JPAQueryFactory๋ฅผ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•ด์ฃผ๋Š” ์„ค์ • ํด๋ž˜์Šค

์ด๋Ÿฐ์‹์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

queryFactory
    .selectFrom(qMember)
    .where(qMember.username.eq("๋ญ‰์ง€"))
    .fetch();

 

๋ฐ˜์‘ํ˜•