-
02. Querydsl 설정BackEnd/Querydsl 2021. 7. 11. 06:49반응형
Querydsl 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해 주는 프레임워크다. 문자열로 작성하거나 XML 파일에 쿼리를 작성하는 대신, Querydsl이 제공하는 플루언트(Fluent) API를 이용해서 쿼리를 생성할 수 있다.
1. Querydsl 설정
> build.gradle에 querydsl 설정 추가
plugins {
id 'org.springframework.boot' version '2.4.8'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
//querydsl 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"}
group = 'com.spring'
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'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
//querydsl 추가
implementation 'com.querydsl:querydsl-jpa'
}
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 추가 끝
2. 검증용 엔티티 생성
package com.spring.querydsl.entity;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@Getter @Setter
public class Hello {
@Id @GeneratedValue
private Long id;
}
3. 검증용 Q 타입 생성
Gradle IntelliJ 사용법
Gradle > Tasks > build > clean
Gradle > Tasks > other > compileQuerydsl
Gradle 콘솔 사용법
./gradlew clean compileQuerydsl
Q 타입 생성 확인
build > generated > querydsl > QHello.java 파일이 생성되어 있어야 함
> 참고: Q타입은 컴파일 시점에 자동 생성되므로 버전관리(GIT)에 포함하지 않는 것이 좋다. 앞서 설정에서 생성 위치를 gradle build 폴더 아래 생성되도록 했기 때문에 이 부분도 자연스럽게 해결된다. (대부분 gradle build 폴더를 git에 포함하지 않는다.)
4. application.yml
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/querydsl
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create # 애플리케이션 실행 시점에 테이블 drop > 재생성
properties:
hibernate:
# show_sql: true # System.out 에 하이버네이트 실행 SQL을 남긴다.
format_sql: true
logging.level:
org.hibernate.SQL: debug # logger를 통해 하이버네이트 실행 SQL을 남긴다
# org.hibernate.type: trace
참고) 다음 설정을 추가하면 실행되는 JPQL을 볼 수 있다.
> spring.jpa.properties.hibernate.use_sql_comments: true
반응형'BackEnd > Querydsl' 카테고리의 다른 글
06. Querydsl Case (0) 2021.07.27 05. Querydsl Subquery (0) 2021.07.25 04. Querydsl Join (0) 2021.07.18 03. Querydsl 기본 문법 (0) 2021.07.17 01. Querydsl 레퍼런스 문서 (0) 2021.07.11