ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.