[Spring boot] JPA QueryDSL 환경 설정, 연동하기 (Maven, Gradle ver)
2023. 2. 22.
반응형

JPA에서 동적쿼리를 사용하기 위해 QueryDSL을 사용해야 하는데 이걸 쓰려면 외부에서 라이브러리를 가져와야 하기 때문에 세팅이 필요하다.

 
Maven version
 
pom.xml
 

//의존성 부분
<dependency>
	<groupId>com.querydsl</groupId>
	<artifactId>querydsl-apt</artifactId>
	<scope>provided</scope>
</dependency>
<dependency>
	<groupId>com.querydsl</groupId>
	<artifactId>querydsl-jpa</artifactId>
</dependency>

//플러그인 부분

<plugin>
	<groupId>com.mysema.maven</groupId>
	<artifactId>apt-maven-plugin</artifactId>
	<version>1.1.3</version>
	<executions>
		<execution>
			<goals>
				<goal>process</goal>
			</goals>
			<configuration>
				<outputDirectory>target/generated-sources/java</outputDirectory>
				<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
				<options>
					<querydsl.entityAccessors>true</querydsl.entityAccessors>
				</options>
			</configuration>
		</execution>
	</executions>
</plugin>

 


**run maven compile 실행해주기**

 

 

 

 

 

 
Gradle version
 
build.gradle
 

buildscript {
    ext {
        queryDslVersion = "5.0.0"
    }
}

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

dependencies {
    api 'org.springframework.boot:spring-boot-starter-data-jpa:2.7.5'
    implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
    implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
}

// querydsl 사용할 경로 지정합니다. 현재 지정한 부분은 .gitignore에 포함되므로 git에 올라가지 않습니다.
def querydslDir = "$buildDir/generated/'querydsl'"

// JPA 사용여부 및 사용 경로 설정
querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}

// build시 사용할 sourceSet 추가 설정
sourceSets {
    main.java.srcDir querydslDir
}


// querydsl 컴파일 시 사용할 옵션 설정
compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}

// querydsl이 compileClassPath를 상속하도록 설정
configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
    querydsl.extendsFrom compileClasspath
}

 

 
application.properties
 

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true

 
**설정 후 gradle에서 clean, build 하기**
 
 
 

반응형
myoskin