현재 JPA공부를 하고있고, 현재는 객체지향 쿼리언어라는 챕터에 와있다. 여기서 QueryDSL이라는 것을 배우려 하는데, QueryDSL을 사용하면 Criteria JPQL보다 더 쉽게 코드를 작성할 수 있고 직관적이며 같은 기능을 제공한다고 한다.
build.gradle에 아래와 같은 설정을 세팅한다.
plugins {
id 'java'
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
//querydsl 추가 시작
def querydslVersion = '4.3.1'
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 추가 끝
// ... 생략 ...
dependencies {
// ... 생략 ...
implementation "com.querydsl:querydsl-jpa:${querydslVersion}"
implementation "com.querydsl:querydsl-apt:${querydslVersion}"
implementation "com.querydsl:querydsl-core:${querydslVersion}"
annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', version: querydslVersion
annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', version: querydslVersion, classifier: 'jpa'
}
test {
useJUnitPlatform()
}
clean {
delete file('src/main/generated') // 인텔리제이 Annotation processor 생성물 생성위치
}
Task > other > compileQuerydsl을 누른다.
이러면, 내가 만든 Entity 객체에 대한 Q클래스가 만들어 진 것을 확인할 수 있다.
private static void logic(EntityManager em)
{
JPAQuery<Member> query = new JPAQuery<>(em);
QMember qMember = new QMember("m");
List<Member> members = query.from(qMember)
.where(qMember.name.eq("주현태"))
.orderBy(qMember.age.desc())
.fetch();
System.out.println("회원리스트 출력 : " + members);
}
이를 이용해서, 회원리스트를 출력하는 간단한 예제를 사용해 보았다.
다음과 같이 정상적으로 output 이 출력되는 것을 확인할 수 있었다.
'IT > JPA' 카테고리의 다른 글
JPA 1차캐시와 2차캐시 (0) | 2023.07.29 |
---|---|
H2 에러 (Database "/Users/juhyeontae/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) (0) | 2021.08.03 |
JPA 개발환경 구성 (0) | 2019.12.14 |