QueryDSL 세팅 (SpringBoot 3.x 이상)

임동혁 Ldhbenecia·2024년 5월 29일

SpringBoot

목록 보기
6/28
💡 QueryDSL에 대한 설정이 현재 스프링부트 버전에 따라 세팅이 달라졌다. 이로 인해 인터넷에서 중구난방하여 정리한다.

프로젝트 설정

SpringBoot 3.x.x로 오면서 2.6.x보다 세팅이 간단해졌다고한다.
3.x 버전부터 QueryDSL 플러그인을 추가하지 않아도 된다.

  1. build.gradle
plugins {
	id 'java'
	id 'org.springframework.boot' version '3.3.0'
	id 'io.spring.dependency-management' version '1.1.5'
}

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'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

	// QueryDSL Implementation
	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 Build Options
 */
def querydslDir = "src/main/generated"

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

tasks.withType(JavaCompile) {
	options.getGeneratedSourceOutputDirectory().set(file(querydslDir))
}

clean.doLast {
	file(querydslDir).deleteDir()
}
  1. 아래 Gradle에서 clean → build

  1. src/main/generated에 Q클래스 생성

💡 clean 이후 other/compileJava를 해도 가능하다.

QHello가 생겼는지만 확인해두자.

gitignore 추가 사항

generated에 생성된 Q파일은 git에서 관리하면 안된다.
gitignore에 추가하자.

  • 예외 처리 방법
    • build 폴더는 보통 ignore에 넣고 사용하는데 build 폴더에 genereated를 넣는 방법이 있다.
    • def querydslDir = "src/main/generated" 현재 우리는 이 경로에서 generated를 생성했기 때문에 gitignore에 추가해야한다.

우리는 위의 경로(src/)로 하였으니 설정해주자.

def querydslDir = "$buildDir/generated/quuerydsl"

강의에서는 위와 같이 설정하였기 때문에 gitignore을 안해도 된다고 한다.

H2 연결 방법

이전 Spring Data JPA를 할때는 서칭을 통해 루트 페이지에 어떠한 파일을 생성해서 처리하였다.
하지만 URL을 다음과 같이 설정하면 바로 가능하다.

위와 같이 설정하면 자동으로 루트에 .db 파일이 생성된다. 일일이 생성해줄 필요가 없다.

console에 찍히는 SQL을 이쁘게 보고 싶다면?

  • build.gradle에 추가
// P6spy: JPA가 DB에 날리는 쿼리문을 보기 좋은 형태로 로그로 찍어주는 라이브러리
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
profile
지극히 평범한 공대생

0개의 댓글