JAVA

[JAVA] Querydsl 설정

응디 2022. 3. 3. 17:17

Querydsl build.gradle 작성 시 유의사항

보통 요즘은 spring boot 2.6 이상 이기 때문에 Querydsl을 5.0을 사용한다.

또한 2.6 이상부터는 다음과 같은 부분을 확인해야 한다.

  1. build.gradle 설정 변경
  2. PageableExecutionUtils Deprecated(향후 미지원) 패키지 변경
  3. Querydsl fetchResults() , fetchCount() Deprecated(향후 미지원)

build.gradle 설정 방법

buildscript {
	ext {
		queryDslVersion = "5.0.0"
	}
}

plugins {
	id 'org.springframework.boot' version '2.6.3'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	//querydsl 추가
	id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
	id 'java'
}

group = 'study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	//querydsl 추가
	implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
	annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

	//테스트에서 lombok 사용
	testCompileOnly 'org.projectlombok:lombok'
	testAnnotationProcessor 'org.projectlombok:lombok'
}

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

//querydsl 추가 시작
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
	jpa = true
	querydslSourcesDir = querydslDir
}
sourceSets {
	main.java.srcDir querydslDir
}
configurations {
	querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
	options.annotationProcessorPath = configurations.querydsl
}
//querydsl 추가 끝

 

< test code >

@Test
void contextLoads() {
	Hello hello = new Hello();
	em.persist(hello);

	JPAQueryFactory queryFactory = new JPAQueryFactory(em);
	QHello qHello = QHello.hello;

	Hello result = queryFactory.selectFrom(qHello).fetchOne();

	Assertions.assertThat(result).isEqualTo(hello);
	Assertions.assertThat(result.getId()).isEqualTo(hello.getId());
}

 

'JAVA' 카테고리의 다른 글

[JAVA] Q-Type  (0) 2022.03.07
[TEST] 날짜 자동 생성 테스트  (0) 2022.03.03
[JAVA] web 확장 - 페이징과 정렬  (0) 2022.03.03
[JAVA] Auditing  (0) 2022.02.24
[JAVA] 벌크성 수정 쿼리와 @EntityGraph  (0) 2022.02.23