일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- svn 특정 리비전 사이 추출
- svn
- Failed to download metadata for repo 'appstream'
- Remmina
- WH question
- Oracle install
- docker 폐쇄망
- Store password unencrypted
- ant
- apt-get update 오류
- svn update
- expected at least 1 bean which qualifies as autowire candidate
- mysql dml
- grep
- svn 변경된 파일 추출
- 포스트그레스 설치
- svn load
- 프로젝트 네임변경 후 이클립스 로딩시 에러
- Cannot prepare internal mirrorlist: No URLs in mirrorlist
- VirtualBox
- svn dump
- svn log
- xrdp
- svn commit
- NEXUS
- javax.servlet.GenericFilter
- taskkill
- docker oracle12c
- postgres install
- svn 사용법
Archives
- Today
- Total
기억의 습작
query-dsl 을 이용하여 query-factory 생성하는 방법 및 예제 본문
@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 {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// queryDsl 적용을 위해 추가 (26~28) , lombok 추가 안하면 에러남
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
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
|
package com.ppusari.querysdl.db.domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@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
'Software' 카테고리의 다른 글
프로젝트 카피 후 네임변경시 eclipse에 비정상 로드되는 경우 (0) | 2022.03.24 |
---|---|
websocket 을 이용한 카카오톡 채팅 프로그램 만들기 (0) | 2021.08.26 |
What is JNDI? (0) | 2021.08.19 |