Logs

[Spring boot] JPA QueryDSL 환경 설정, 연동하기 (Maven, Gradle ver)

랩실외톨이 2023. 2. 22. 16:59
반응형

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 하기**
 
 
 

반응형