Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- R프로그래밍
- cor()
- 프로그래머스
- RProgramming
- R명령어
- str()
- 자바
- 머신러닝
- querydsl적용하기
- summary()
- 이클립스
- programmers
- Spring
- 알고리즘
- Eclipse
- queryDSL
- DTO사용이유
- stepfilter
- git
- java
- 머신러닝프로세스
- r
- git오류
- 이중배열
- 한글깨지는문제
- Rstudio
- JPA
- Q타입클래스
- LIKE검색
- core.autocrlf
Archives
- Today
- Total
놀고 싶어요
[Querydsl] Querydsl에서 Q타입 클래스 사용하는 방법, 3 가지 본문
Querydsl에서 쿼리 작성 시 모델을 어떻게 사용하는지 알아보겠습니다.
Querydsl에서는 엔티티로 설정된 클래스에 Q모델이라는 쿼리타입 클래스를 미리 생성해놓고 메타데이터로 사용하여 쿼리를 메소드 기반으로 작성합니다.
쉽게 말하자면 querydsl 프레임워크를 사용하면서 쿼리문을 작성하려면 Q타입 클래스가 필요합니다.
Q타입 클래스를 사용하는 방법은 세 가지 정도가 있습니다.
1. 별칭 직접 지정하여 사용하기
2. 기본 인스턴스 사용하기
3. static import하여 사용하기
package study.querydsl.repository;
import com.querydsl.jpa.impl.JPAQueryFactory;
import study.querydsl.domain.Member;
import study.querydsl.domain.QMember;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.DisplayName;
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 javax.persistence.EntityManager;
import static study.querydsl.domain.QMember.member;
import static org.assertj.core.api.Assertions.assertThat;
@Slf4j
@SpringBootTest
@Transactional
class MemberRepositoryTest {
@Autowired
EntityManager em;
JPAQueryFactory queryFactory;
@BeforeEach
public void before() {
queryFactory = new JPAQueryFactory(em);
}
@Test
@DisplayName("Q파일 사용 방법")
void Q파일사용() {
// 1. 별칭 직접 지정
QMember m1 = new QMember("m");
Member member1 = queryFactory
.selectFrom(m1)
.where(m1.name.eq("member1"))
.fetchOne();
// 2. 기본 인스턴스 사용
QMember m2 = QMember.member;
Member member2 = queryFactory
.selectFrom(m2)
.where(m2.name.eq("member1"))
.fetchOne();
// 3. 직접 static import 하여 사용 -> import static kbds.querydsl.domain.QMember.member;
Member member3 = queryFactory
.selectFrom(member)
.where(member.name.eq("member1"))
.fetchOne();
assertThat(member1.getAge()).isEqualTo(member2.getAge()).isEqualTo(member3.getAge());
}
}
보통 3번째 방식을 많이 사용합니다.
'JPA' 카테고리의 다른 글
[JPA] Entity보다 DTO 조회를 권장하는 이유 (0) | 2022.05.15 |
---|---|
[Querydsl] VSCode에서 Querydsl 사용 시, Q타입 import 빨간 줄 해결 방법 (0) | 2022.05.15 |
Spring Boot Data Jpa 프로젝트에서 Querydsl 적용하기 (0) | 2022.05.15 |