πŸ“˜ QueryDSL μ™„μ „ κ°€μ΄λ“œ


βœ… 1. QueryDSLμ΄λž€?


βœ… 2. Gradle μ„€μ • (Q클래슀 생성 포함)

πŸ“¦ build.gradle.kts (Kotlin DSL)

plugins {
    id("com.ewerk.gradle.plugins.querydsl") version "1.0.10"
    id("java")
}

dependencies {
    implementation("com.querydsl:querydsl-jpa:5.1.0")
    annotationProcessor("com.querydsl:querydsl-apt:5.1.0:jpa") // Q클래슀 μƒμ„±μš©
    annotationProcessor("jakarta.persistence:jakarta.persistence-api:3.1.0")
    annotationProcessor("jakarta.annotation:jakarta.annotation-api:2.1.1")
}

val querydslDir = "$buildDir/generated/querydsl"

sourceSets {
    main {
        java {
            srcDir(querydslDir)
        }
    }
}

tasks.withType<JavaCompile> {
    options.annotationProcessorGeneratedSourcesDirectory = file(querydslDir)
}

πŸ’‘ 주의: Kotlin을 μ“°μ§€ μ•ŠλŠ”λ‹€λ©΄ build.gradle (Groovy DSL)둜 μ•Œλ €μ£Όμ„Έμš”. ν•΄λ‹Ή 버전도 제곡 κ°€λŠ₯ν•©λ‹ˆλ‹€.


βœ… 3. μ—”ν‹°ν‹° 클래슀 μ˜ˆμ‹œ

@Entity
public class Member {
    @Id
    @GeneratedValue
    private Long id;

    private String username;

    private int age;

    @ManyToOne(fetch = FetchType.LAZY)
    private Team team;
}

@Entity
public class Team {
    @Id
    @GeneratedValue
    private Long id;

    private String name;
}


βœ… 4. Q클래슀 생성 방법

βœ… ./gradlew clean build λ˜λŠ” ./gradlew compileJava λ₯Ό μ‹€ν–‰ν•˜λ©΄ QMember, QTeam ν΄λž˜μŠ€κ°€ build/generated/querydsl 디렉토리에 μžλ™ μƒμ„±λ©λ‹ˆλ‹€.