기억의 습작

query-dsl 을 이용하여 query-factory 생성하는 방법 및 예제 본문

Software

query-dsl 을 이용하여 query-factory 생성하는 방법 및 예제

뿌사리다 2019. 9. 1. 08:22

소스 링크

 

@Entity 객체의 소스를 자동으로 query-factory 클레스로 만들어 주기 위한 방법을 기술한다.

 

테스트 환경버전 정보

 - IDE: spring-tool-suite-4-4.3.2.RELEASE

 - Gradle: 5.6  ( gradle 버전에 따라 설정방법이 다르다)

 

 

설정하기

 

아래 소스를 참고하여 queryDsl 을 위한 의존성을 추가한다.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
plugins {
    id 'org.springframework.boot' version '2.1.7.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
    
    // queryDsl 적용을 위해 추가 (8~9)
    id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
    id 'idea'
    
}
 
group = 'com.ppusari'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
 
repositories {
    mavenCentral()
}
 
dependencies {
    
    // queryDsl 적용을 위해 추가 (26~28) , lombok 추가 안하면 에러남
    compileOnly 'org.projectlombok:lombok'    
    annotationProcessor 'org.projectlombok:lombok'
}
 
 
 
// querydsl 적용을 위해 추가 (34~56)
def querydslSrcDir = 'src/main/generated'
 
querydsl {
    library = "com.querydsl:querydsl-apt"
    jpa = true
    querydslSourcesDir = querydslSrcDir
}
 
compileQuerydsl{
    options.annotationProcessorPath = configurations.querydsl
}
 
configurations {
    querydsl.extendsFrom compileClasspath
}
 
sourceSets {
    main {
        java {
            srcDirs = ['src/main/java', querydslSrcDir]
        }
    }
}
 

프로젝트 우클릭 -> Gradle -> Refresh Gradle Project  (라이브러리를 업데이트한다)

 

 

빌드하기

./gradlew clean

./gradlew  classes  (build를 하면 test소스에서 에러가 발생함)

다시한번 프로젝트 우클릭 -> Gradle -> Refresh Gradle Project  (이것을 해야 src/main/generated가 생성됨)

 

 

결과

src/main/generated 폴더가 생성되면 query-factory 준비완료.

 

 

query-factory 생성하기

 

이제 @Entity 객체를 하나 만들고 다시 빌드해보자.

 

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
 
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
 
import lombok.NoArgsConstructor;
 
@Entity
@Setter
@Getter
@NoArgsConstructor
public class Member {
 
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    
    private String name;
    
    private int age;
    
}

위 코드 추가 후 다시 빌드 (./gradlew classes)

 

 

프로젝트 우클릭 -> Refresh (F5) 하면

아래 스크린샷 처럼  QMember가 생성된 것을 확인할 수 있다.

이제 만들어진 QMember 소스를 가지고 활용하면 됩니다.

 

도움이 되셨다면 댓글을 남겨주시고 환경 차이로 인해 실패 하였다면 질문주세요~^^

 

728x90
반응형
LIST