Free Lines Arrow
본문 바로가기
DataBase/JPA

[QueryDSL] QueryDSL 설정 1 - QueryDsl 설정 적용

by skahn1215 2024. 11. 24.
728x90
반응형

QueryDSL 설정

QueryDSL 을 설정하다 보면 에러가 발생할 때가 있다.
이를 바탕으로 한방에 설정한 스크립트를 공유해본다.
 

QueryDSL 추가

  • 아래 설정 값을 추가해 준다.
  • 뒤에 jakarta 를 추가해준 부분이 있는데 javax 와 혼용되어 사용될 경우 에러가 나기 때문에 설정을 해주었다.
// 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:3.1.0"


// 테스트 코드를 위한 DB 설정
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'com.h2database:h2'

 
 

QClass 경로 설정

  • QClass 경로를 커스텀해주어 경로를 지정한다.
  • 경로를 지정해주지 않아도 잘 될때가 있지만 빌드가 안되면 경로지정을 해줘야 한다.
def querydslGeneratedDir = project.hasProperty('querydsl.generated.dir') ?
		project.property('querydsl.generated.dir') : "$buildDir/generated/querydsl"

// 소스셋 설정: Java 소스와 QClass 파일이 생성되는 디렉토리 경로 포함
sourceSets {
	main {
		java {
			srcDirs = ['src/main/java', querydslGeneratedDir]
		}
	}
}


// QClass 생성 후, 해당 경로를 설정하는 작업
compileJava {
	options.annotationProcessorPath = configurations.annotationProcessor
	options.compilerArgs = ['-processor', 'com.querydsl.apt.jpa.JPAAnnotationProcessor']
}

 
 
Clean 후 Build 를 해준다.
성공적으로 빌드가 되었다

 
 

전체 스크립트

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

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
	toolchain {
		languageVersion = JavaLanguageVersion.of(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'
	implementation 'org.springframework.boot:spring-boot-starter-webflux'
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'io.projectreactor:reactor-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

	// 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:3.1.0"


	// 테스트 코드를 위한 DB 설정
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'com.h2database:h2'
}

def querydslGeneratedDir = project.hasProperty('querydsl.generated.dir') ?
		project.property('querydsl.generated.dir') : "$buildDir/generated/querydsl"

// 소스셋 설정: Java 소스와 QClass 파일이 생성되는 디렉토리 경로 포함
sourceSets {
	main {
		java {
			srcDirs = ['src/main/java', querydslGeneratedDir]
		}
	}
}


// QClass 생성 후, 해당 경로를 설정하는 작업
compileJava {
	options.annotationProcessorPath = configurations.annotationProcessor
	options.compilerArgs = ['-processor', 'com.querydsl.apt.jpa.JPAAnnotationProcessor']
}


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

 
 
 

728x90
반응형

'DataBase > JPA' 카테고리의 다른 글

[QueryDSL] QueryDSL 설정 3 - DataSource  (0) 2024.11.26
[QueryDSL] QueryDSL 설정2 - Mysql 연동  (0) 2024.11.25
[JPA] AttributeConverter  (0) 2022.04.02
[JPA] JPA의 설정 옵션들  (0) 2022.01.26
[JPA] JPQL Named 쿼리  (0) 2021.09.28

댓글