build.gradle 설정

[참고]

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.5'
    id 'io.spring.dependency-management' version '1.1.4'
}

group = 'study'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    **//Querydsl 추가
    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"**
}

tasks.named('test') {
    useJUnitPlatform()
}

**//Querydsl 추가
clean {
    delete file('src/main/generated')
}**

테스트용 엔티티

QueryDSL은 gradle에다가 설정하고 gradle 빌드 과정 속에서 그 Q타입이라는 파일을 뽑아내야 합니다.

확인하기 위해 테스트용 엔티티를 하나 만들어줍니다.

@Entity
@Getter
public class Hello {

    @Id
    @GeneratedValue
    private Long id;

}

그리고 Tasks → other -> compileJava 를 실행하시면 Q클래스가 정상적으로 생성됩니다. → 참고

Untitled

실행하면 build.generated 에 querydsl 폴더가 생깁니다. 그 안에 QHello 란 자바파일이 생겼습니다.

Untitled

Hello 엔티티를 보고 querydsl 이 Qhello 엔티티를 만들어 준 것입니다.

참고로 Tasks → other -> compileJava 를 실행을 하지 않고 그냥 빌드해도 자동으로 Q 파일이 생성됩니다. 기본적으로 자바 컴파일하는 프로세서 안에 querydsl 프로세서가 들어가게 되기 때문입니다.

터미널에서 ./gradlew compileJava 명령어로 실행해도 똑같이 Q 파일이 만들어지겠죠.