Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Querydsl 설정 및 검증 본문

인프런/[인프런] QueryDsl

Querydsl 설정 및 검증

Seung__ 2021. 9. 1. 21:17

build.gradle에 아래와 같이 설정을 해주자.

 

1. plugin 추가


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

 

 

 

2. 라이브러리 추가


dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    
    //querydsl 추가
    implementation 'com.querydsl:querydsl-jpa'
    
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

 

 

3.  build.gradle 하단에 querydsl 추가


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

 

 

 

4. build.gradle 전체


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

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'

    //querydsl 추가
    implementation 'com.querydsl:querydsl-jpa'

    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

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

 

 

 

 

5. 테스트용 엔티티 생성


@Entity
@Getter @Setter
public class Hello {

    @Id
    @GeneratedValue
    private Long id;
    
}

 

 

 

6. compileQuerydsl 실행


따닥

 

 

 

7. Q파일 생성


  • compileQuerydsl을 실행하고 난 뒤에 경로를 지정한 폴더에 Q파일이 생성되었다.
  • Querydsl이 Hello 엔티티를 보고 QHello를 생성해줌.

 

 

 

 

8. 주의사항


  • 생성된 Q파일은 Git에 관리하면 안됨.
  • Q파일은 시스템이 생성함. 버전이 올라가면 세부적으로 달라질 수 있음.
  • GItIgnore 필요.
  • 지금과 같이 build경로에 생성이 되면 편함
  • 왜냐? 보통 build폴더 ignore함 ㅋㅋ
  • 별도로 ignore불필요~

 

 

 

9. 사용예제


  • Query사용할 때 Q파일 사용
  • JPAQueryFactory에 entityManager 넣어줌.
  • QHello를 생성
  • Query를 생성할 때 QHello 사용
  @Test
    void contextLoads() {

        Hello hello = new Hello();
        em.persist(hello);

        JPAQueryFactory query = new JPAQueryFactory(em);

        QHello qHello = new QHello("h");

        Hello result = query
                        .selectFrom(qHello)
                        .fetchOne();

        assertThat(result).isEqualTo(hello);
    }

 

 

10. GitHub


 

GitHub - bsh6463/Querydsl

Contribute to bsh6463/Querydsl development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] QueryDsl' 카테고리의 다른 글

결과 조회  (0) 2021.09.01
검색조건 쿼리  (0) 2021.09.01
기본 Q-Type  (0) 2021.09.01
Querydsl vs JPQL  (0) 2021.09.01
예제 도메인 모델  (0) 2021.09.01
Comments