[Inflearn] 실전! Querydsl - 김영한 https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84/dashboard
[GIT] https://github.com/ijo0r98/querydsl
정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해 주는 프레임워크으로 엔티티에 대한 Qclass를 생성하여 사용한다.
/**
* QMember is a Querydsl query type for Member
*/
@Generated("com.querydsl.codegen.EntitySerializer")
public class QMember extends EntityPathBase<Member> {
private static final long serialVersionUID = -769675599L;
private static final PathInits INITS = PathInits.DIRECT2;
public static final QMember member = new QMember("member1");
public final NumberPath<Integer> age = createNumber("age", Integer.class);
public final NumberPath<Long> id = createNumber("id", Long.class);
public final QTeam team;
public final StringPath username = createString("username");
...
}
[Querydsl 레퍼런스] www.querydsl.com/static/querydsl/4.0.1/reference/ko-KR/html_single/
Querydsl을 사용함으로써 JPA로 해결하지 못하는 복잡한 쿼리나 동적 쿼리 생성이 가능하다. 자바 코드로 쿼리를 작성하기 때문에 컴파일 시점에서 뛰어쓰기, 오타 등의 오류를 발견할 수 있을 뿐 아니라 자동 완성 기능의 도움을 받을 수 있다. 또한 단순 반복 작업을 줄여줘 핵심 비지니스 로직 개발에 더욱 집중할 수 있으며 메서드로 이용하여 코드 재사용성을 높인다.
build.gradle(*build.gradle 수정 후 Gradle 새로고침은 필수)
plugins {
// queryDSL plugin 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
dependencies {
//querydsl library 추가
implementation 'com.querydsl:querydsl-jpa'
}
// querydsl builder
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
$buildDir/generated/querydsl : Q타입이 생성될 경로 지정
※ 새로 엔티티를 생성하여 그에 대한 Q타입을 생성해야할 때
- intellij
초기화 : Gradle > Tasks > build > clean
Q타입 컴파일 : Gradle > Tasks > other > Gradle Tasks other compileQuerydsl
- 콘솔
./gradlew clean compileQuerydsl
위의 경로(build/generated/querydsl/..)에 새로운 엔티티에 대한 Q타입이 생겼는지 확인
Q타입은 컴파일 시점에 자동 생성되므로 버전관리(GIT)에 포함하지 않는 것이 좋은데 앞서 설정에서 생성 위치를 build 폴더 아래 생성되도록 했기 때문에 이 부분도 자연스럽게 해결된다(대부분 gradle build 폴더를 git에 포함하지 않는다).
[SPRING] Querydsl | 문법(2) 조인연산 (0) | 2021.04.30 |
---|---|
[SPRING] Querydsl | 기본 문법(1) (0) | 2021.04.30 |
[SPRING] JPA 활용2 | OSIV와 성능 최적화 (0) | 2021.04.21 |
[SPRING] JPA 활용2 | API 개발과 성능 최적화(2) (0) | 2021.04.21 |
[SPRING] JPA 활용2 | API 개발과 성능 최적화(1) (0) | 2021.04.20 |
댓글 영역