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 |