[스프링부트 3.x + Querydsl 설정 세팅]

sonnng·2023년 11월 24일
0

Spring

목록 보기
33/41
post-thumbnail

스프링부트 2버전과 3버전은 Querydsl 설정하는 방법이 다르다. 이중에서 이젠 스프링부트 3버전만 제작하는게 가능해졌으므로 스프링부트 3버전의 Querydsl 설정법만 작성해보았다.

1. build.grade 설정

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.0.3'
	id 'io.spring.dependency-management' version '1.1.0'
    //  Querydsl 플러그인 사용 X
	//	id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}

group = 'sample'
version = '0.0.1-SNAPSHOT'
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.mysql:mysql-connector-j'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

    // Spring boot 3.x이상에서 QueryDsl 패키지를 정의하는 방법
	implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
	annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
	annotationProcessor "jakarta.annotation:jakarta.annotation-api"
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

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

// === QueryDsl 빌드 옵션 (선택) ===
def querydslDir = "$buildDir/generated/querydsl"

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

tasks.withType(JavaCompile) {
	options.generatedSourceOutputDirectory = file(querydslDir)
}

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

이렇게 //주석처리된 부분 아랫내용들을 프로젝트 build.gradle에 붙여서 사용하면 된다.

Querydsl은 apt-maven-plugin을 사용해서 컴파일 과정에서 Q-Type 클래스를 생성한다. 따라서 querydsl-apt jakarta 버전에서는 apt-maven-plugin이 필요없다.

2. Entity 작성

package study.querydsl.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter @Setter
public class Hello {
    @Id @GeneratedValue
    private Long id;


}

여기서 주의할 점은 코드에서 보여지는 것처럼 javax의 패키지->jakarta 패키지로 설정해서 코드를 작성해야한다는 점이다.

3. main() 실행

원래는 스프링부트 2버전이었다면 Gradle-other-compileQuerydsl을 실행해서 Q타입의 엔티티가 생성되게해야했다.

하지만 보다시피 3버전에서는 compileQuerydsl이 없다. 스프링이 알아서 해주기 때문에 우리는 main()만 실행해주면

이렇게 똑같은 패키지 경로에 Q타입의 Hello가 생성된걸 확인할 수 있다.

0개의 댓글