build.gradle

plugins {
   id 'org.springframework.boot' version '2.6.5'
   id 'io.spring.dependency-management' version '1.0.11.RELEASE'
   id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

ext["hibernate.version"] = "5.6.5.Final"

configurations {
   compileOnly {
      extendsFrom annotationProcessor
   }
}

repositories {
   mavenCentral()
}

dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
   implementation 'org.springframework.boot:spring-boot-starter-web'

   //JdbcTemplate 추가
// implementation 'org.springframework.boot:spring-boot-starter-jdbc'
   //H2 데이터베이스 추가
   runtimeOnly 'com.h2database:h2'
   //MyBatis 추가
   implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
   //JPA, 스프링 데이터 JPA 추가
   implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

   //Querydsl 추가
   implementation 'com.querydsl:querydsl-jpa'
   annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
   annotationProcessor "jakarta.annotation:jakarta.annotation-api"
   annotationProcessor "jakarta.persistence:jakarta.persistence-api"

   compileOnly 'org.projectlombok:lombok'
   annotationProcessor 'org.projectlombok:lombok'
   testImplementation 'org.springframework.boot:spring-boot-starter-test'

   //테스트에서 lombok 사용
   testCompileOnly 'org.projectlombok:lombok'
   testAnnotationProcessor 'org.projectlombok:lombok'
}

tasks.named('test') {
   useJUnitPlatform()
}

//Querydsl 추가, 자동 생성된 Q클래스 gradle clean으로 제거
clean {
   delete file('src/main/generated')
}

 

 

 

Querydsl로 추가된 부분은 다음 두 부분이다.

//Querydsl 추가
implementation 'com.querydsl:querydsl-jpa'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"

 

//Querydsl 추가, 자동 생성된 Q클래스 gradle clean으로 제거
clean {
   delete file('src/main/generated')
}

 

 

 

 

 

검증 - Q 타입 생성 확인 방법

Preferences Build, Execution, Deployment Build Tools Gradle

여기에 가면 크게 2가지 옵션을 선택할 수 있다. 참고로 옵션은 둘다 같게 맞추어 두자.
 1. Gradle: Gradle을 통해서 빌드한다.
 2. IntelliJ IDEA: IntelliJ가 직접 자바를 실행해서 빌드한다.

 

 

 

 

옵션 선택1 - Gradle - Q타입 생성 확인 방법

 

 

 

Gradle IntelliJ 사용법

 Gradle -> Tasks -> build -> clean
 Gradle -> Tasks -> other -> compileJava

 

 

 

Gradle 콘솔 사용법

 ./gradlew clean compileJava

 

 

 

 

Q 타입 생성 확인

 build -> generated -> sources -> annotationProcessor -> java/main 하위에
     hello.itemservice.domain.QItem 이 생성되어 있어야 한다.

 

 

 

 

 

참고: Q타입은 컴파일 시점에 자동 생성되므로 버전관리(GIT)에 포함하지 않는 것이 좋다. > gradle 옵션을 선택하면 Q타입은 gradle build 폴더 아래에 생성되기 때문에 여기를 포함하지 않아야 한다. 대부분 gradle build 폴더를 git에 포함하지 않기 때문에 이 부분은 자연스럽게 해결된다.

 

 

 

 

 

Q타입 삭제

gradle clean 을 수행하면 build 폴더 자체가 삭제된다. 따라서 별도의 설정은 없어도 된다.

 

 

 

 

옵션 선택2 - IntelliJ IDEA - Q타입 생성 확인 방법

Build -> Build Project 또는
Build -> Rebuild 또는
main() , 또는 테스트를 실행하면 된다.

 

 

IntelliJ IDEA 옵션을 선택하면 src/main/generated 에 파일이 생성되고, 필요한 경우 Q파일을 직접 삭제해야 한다.
gradle 에 해당 스크립트를 추가하면 gradle clean 명령어를 실행할 때 src/main/generated 의n 파일도 함께 삭제해준다.

 

 

 

 

 

 

 

처 : 김영환 스프링 DB2 강의

'데이터 접근 기술 > Querydsl' 카테고리의 다른 글

Querydsl 적용  (0) 2022.08.22
복사했습니다!