build.gralde 코드 추가 (주석된 부분 추가)
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
plugins {
id 'org.springframework.boot' version '2.6.7'
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'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
//querydsl 추가
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
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
}
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
//querydsl 추가 끝
검증용 엔티티 생성 (Hello Class)
package study.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;
}
후에 오른쪽 gradle 클릭 (없으면 왼쪽 맨아래 네모난 박스 클릭 마우스 이동 후 gradle 클릭) -> querydsl 클릭 -> task 클릭 -> other 클릭 -> compileQuerydsl 더블 클릭
참고
위의 작업없이 build만 해도 되긴함.
후에 build>generated>querydsl>study.qeurydsl.entity를 보면 QHello가 생선된 걸 볼 수 있다.
QHello 코드
package study.querydsl.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QHello is a Querydsl query type for Hello
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QHello extends EntityPathBase<Hello> {
private static final long serialVersionUID = 1910216155L;
public static final QHello hello = new QHello("hello");
public final NumberPath<Long> id = createNumber("id", Long.class);
public QHello(String variable) {
super(Hello.class, forVariable(variable));
}
public QHello(Path<? extends Hello> path) {
super(path.getType(), path.getMetadata());
}
public QHello(PathMetadata metadata) {
super(Hello.class, metadata);
}
}
Hello 엔티티를 보고 querydsl이 QHello란 엔티티를 만들어준 것이다.
QHello는 querydsl에서 쿼리와 관련된 작업을 할 때 사용하기위해 만들어지는 엔티티이다.
참고
querydsl이 만들어준 QHello와 같은 엔티티는 git에서 관리하면 안된다. (자동으로 gitignore되는 폴더에 생성되기때문에 상관없긴하다.)
출처
'spring > 인프런 강의 정리' 카테고리의 다른 글
[Querydsl] 3. 중급 문법 (0) | 2022.05.18 |
---|---|
[Querydsl] 2. 기본 문법 (0) | 2022.05.17 |
[Spring Data JPA] 4. 확장 기능 (0) | 2022.05.16 |
[Spring Data JPA] 3. 쿼리 메소드 기능 (0) | 2022.05.14 |
[Spring Data JPA] 2. 예제 도메인 모델과 동작확인 & 공통 인터페이스 (0) | 2022.05.13 |