Querydsl - 환경설정

Seongjin Jo·2022년 12월 28일
0

Querydsl

목록 보기
1/8
post-thumbnail

✔ Querydsl 기본 설정 ( 스프링부트 2.6버전 ~ 3.0버전 이전 )

//querydsl 추가
buildscript {
	ext {
		queryDslVersion = "5.0.0"
	}
}

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

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'
	implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8'
    
    //querydsl 추가
	implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
	annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"
	
    compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'mysql:mysql-connector-java'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

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 추가 끝

build.gradle 설정에서 //querydsl 추가라고 되어있는 부분에 추가하면된다.

//기존 추가 방식
 implementation 'com.querydsl:querydsl-jpa'

스프링 부트 2.6 이상부터는 Querydsl 5.0 지원 방법 추가되어서 의존성 주입에
이 설정을 넣어 줘야 한다.

//스프링부트 2.6이상
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"

✔ Querydsl 환경설정 검증

1.Hello 객체를 생성한다

@Entity
@Getter
@Setter
public class Hello {

    @Id
    @GeneratedValue
    private Long id;

}
  1. Querydsl을 사용하기 위한 객체인 QHello라는 객체가 정상적으로 생성되는지 확인 해보자.
1.우측 상단 Gradle -> other -> CompileQuerydsl을 더블 클릭한다.
2.디렉토리 파일 build -> generated -> querydsl에 QHello객체가 생성된다.

3.Querydsl TestCode 작성

@SpringBootTest
@Transactional
class QuerydslApplicationTests {

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

		JPAQueryFactory query = new JPAQueryFactory(em);
		QHello qHello = QHello.hello; //Querydsl Q타입 동작 확인

		Hello result = query
				.selectFrom(qHello)
				.fetchOne();
                
		Assertions.assertThat(result).isEqualTo(hello);
		//lombok 동작 확인 (hello.getId())
		Assertions.assertThat(result.getId()).isEqualTo(hello.getId());
	}

}

Querydsl Q타입이 정상 동작하는가? -> 예
lombok이 정상 동작 하는가? -> 예

참고로 롬복을 사용하기 위해서는 plugin을 설치한 후에 anotaiton processors라는 설정에서 Enable annotation processing을 활성화 시켜줘야 사용할 수 있다.

이렇게 해서 Querydsl을 사용할 준비를 마쳤다.

0개의 댓글