[자바 ORM 표준 JPA] ch10.객체지향 쿼리 - queryDSL
! 책에선 Maven을 이용했지만 전 Gradle을 사용하고 있기 때문에 구글링으로 찾아가면서 설정했음을 알려드립니다 !
QueryDSL이란
엔티티를 기반으로 쿼리 타입이라는 쿼리용 클래스를 생성합니다.
Querydsl JPA
는 프로젝트 내에서 @Entity 애노테이션이 붙은 클래스를 기반으로 JPAAnnotationProcessor 를 이용하여 Qclass를 생성합니다.
이렇게 생성된 Qclass는 정적코드로 쿼리문을 작성할 수 있게 합니다.
gradle 파일
buildscript {
ext {
queryDslVersion = "5.0.0";
}
}
plugins {
id 'java'
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}
group = 'org.example'
version = '1.0-SNAPSHOT'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.hibernate:hibernate-core:5.4.32.Final'
implementation 'org.postgresql:postgresql:42.2.27'
implementation 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final'
implementation 'org.projectlombok:lombok:1.18.26'
annotationProcessor 'org.projectlombok:lombok:1.18.26'
testImplementation platform('org.junit:junit-bom:5.9.1')
testImplementation 'org.junit.jupiter:junit-jupiter'
// QueryDSL
implementation 'com.querydsl:querydsl-jpa:5.0.0'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0'
annotationProcessor "jakarta.annotation:jakarta.annotation-api:2.1.1"
annotationProcessor "jakarta.persistence:jakarta.persistence-api:2.2.3"
}
test {
useJUnitPlatform()
}
def querydslDir = "src/main/generated"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main {
resources {
srcDirs 'src/main/resources'
}
java {
srcDirs querydslDir
}
}
}
/* 10-8. querydsl이 complieClasspath를 상속하도록 설정 */
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
QyeryDsl 사용하기
Querydsl JPA 모듈은 JPA와 Hibernate API를 모두 지원합니다. JPA API를 사용하려면 다음과 같이 쿼리에 JPAQuery 인스턴스를 사용합니다.
댓글남기기