//querydsl 추가
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.7'
//querydsl 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
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'
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8'
//querydsl 추가
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('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 추가 끝
build.gradle 설정에서 //querydsl 추가라고 되어있는 부분에 추가하면된다.
//기존 추가 방식
implementation 'com.querydsl:querydsl-jpa'
스프링 부트 2.6 이상부터는 Querydsl 5.0 지원 방법 추가되어서 의존성 주입에
이 설정을 넣어 줘야 한다.
//스프링부트 2.6이상
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"
1.Hello 객체를 생성한다
@Entity
@Getter
@Setter
public class Hello {
@Id
@GeneratedValue
private Long id;
}
1.우측 상단 Gradle -> other -> CompileQuerydsl을 더블 클릭한다.
2.디렉토리 파일 build -> generated -> querydsl에 QHello객체가 생성된다.
3.Querydsl TestCode 작성
@SpringBootTest
@Transactional
class QuerydslApplicationTests {
@Autowired
EntityManager em;
@Test
void contextLoads() {
Hello hello = new Hello();
em.persist(hello);
JPAQueryFactory query = new JPAQueryFactory(em);
QHello qHello = QHello.hello; //Querydsl Q타입 동작 확인
Hello result = query
.selectFrom(qHello)
.fetchOne();
Assertions.assertThat(result).isEqualTo(hello);
//lombok 동작 확인 (hello.getId())
Assertions.assertThat(result.getId()).isEqualTo(hello.getId());
}
}
Querydsl Q타입이 정상 동작하는가? -> 예
lombok이 정상 동작 하는가? -> 예
참고로 롬복을 사용하기 위해서는 plugin을 설치한 후에 anotaiton processors라는 설정에서 Enable annotation processing을 활성화 시켜줘야 사용할 수 있다.
이렇게 해서 Querydsl을 사용할 준비를 마쳤다.