본문 바로가기

QueryDSL

[QueryDSL] Querydsl 설정과 검증

1️⃣ Gradle 설정 - 스프링 부트 3.x

 dependencies {
	//QueryDsl
	implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
	annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
	annotationProcessor "jakarta.annotation:jakarta.annotation-api"
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

 

2️⃣ Querydsl 환경설정 검증

 

1. 검증용 엔티티 생성

@Entity
@Getter
@Setter
public class Hello {

    @Id @GeneratedValue
    public Long id;
}

 

2. QClass 빌드

  • Gradle의 Tasks에서 [build > clean] ->[other > compileJava] 과정을 차례로 수행

  • Q 타입 생성 확인
  • build → generated → querydsl

3️⃣ 테스트 케이스로 실행 검증

package study.querydsl;

import com.querydsl.jpa.impl.JPAQueryFactory;
import jakarta.persistence.EntityManager;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional;
import study.querydsl.entity.Hello;
import study.querydsl.entity.QHello;

@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);
       Assertions.assertThat(result.getId()).isEqualTo(hello.getId());
    }
}
  • 참고: 스프링 부트에 아무런 설정도 하지 않으면 h2 DB를 메모리 모드로 JVM안에서 실행한다.

QueryDSL 라이브러리 살펴보기

  • querydsl-apt: Querydsl 관련 코드 생성 기능 제공
  • querydsl-jpa: querydsl 라이브러리

 

'QueryDSL' 카테고리의 다른 글

[QueryDSL] 수정, 삭제 벌크 연산, SQL function 호출  (0) 2025.02.19
[QueryDSL] 동적 쿼리  (0) 2025.02.19
[QueryDSL] 프로젝션과 결과 반환  (0) 2025.02.19
[QueryDSL] 기본 문법  (0) 2025.02.17
[Querydsl] QueryDSL 란?  (0) 2025.02.17