๋ฐ์ํ
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();
๋ฐ์ํ
'๐๏ธ ๋ฐฑ์๋ > ๐Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| # Spring Boot Maven ํ๋ก์ ํธ์์ Swagger UI ์ ์ฉํ๊ธฐ (springdoc-openapi ์ค์ ๋ฒ) (1) | 2025.05.28 |
|---|---|
| # @Autowired ๋ณด๋จ ์์ฑ์ ์ฃผ์ ๋ฐฉ์? @RequiredArgsConstructor๋? (0) | 2025.05.28 |
| # Spring - ์์ธ์ฒ๋ฆฌ @Valid๋ฅผ ์ฌ์ฉํด ์ ํจ์ฑ๊ฒ์ฌ ํ๊ธฐ (1) | 2025.05.27 |
| # JPA ๋ฉ์๋, ์กฐ๊ฑด์ฐ์ฐ ํค์๋ ์ ๋ฆฌ (0) | 2025.05.19 |
| # QueryDSL ์กฐ๊ฑด์ ํจ์ ์ ๋ฆฌ (0) | 2025.05.19 |