TIL 2023-12-15 QueryDSL 기본 사용법

2023. 12. 15. 22:17TIL
목차
  1. QueryDSL
  2. 기본 문법

QueryDSL

QueryDSL은 JPAQueryFactory가 필요하다

 

JPAQueryFactory는 생성자로 EntityManager가 필요하다

 


      
public class QueryDsl {
@Autowired
EntityManager entityManager;
JPAQueryFactory jpaQueryFactory;
public void method() {
jpaQueryFactory = new JpaQueryFactory(entityManager);
}
}

 

이런 식으로 받아주면 된다.

 

JpaQueryFactory 기본 문법은 SQL 문법이랑 매우 비슷하다.

 

기본 문법

select()

SQL의 SELECT다


      
SELECT * FROM users
# 여기서 SELECT. 매개 변수로 컬럼을 넣어주면 된다

 

from()

SQL의 FROM


      
SELECT * FROM users
# 여기서 FROM. 매개변수로 테이블을 넣어주면 된다

 

selectFrom()


      
SELECT * FROM users
# 여기서 SELECT 및 FROM
# 매개변수로 users를 넣어주면 위와 같은 SQL이 작성된다

 

where()

SQL의 WHELE 조건절


      
SELECT * FROM users WHERE USERNAME = 'WONOW'
# jpaQueryFactory.selectFrom(users).where.(users.username.eq("WONOW"));

 

매개변수 안에 조건 메서드를 넣어주면 된다

저 eq는 equals

진짜... 대박 잘만들었다 DSL

 

Fetch 메서드

fetch()

List 형식으로 반환


      
@Override
@SuppressWarnings("unchecked")
public List<T> fetch() {
try {
Query query = createQuery();
return (List<T>) getResultList(query);
} finally {
reset();
}
}

 

메서드를 들어가서 보면 이렇다

내부적으로 JPQL을 쓰는 것이다. 진짜 대박인데... DSL

 

fetchOne()


      
@Nullable
@SuppressWarnings("unchecked")
@Override
public T fetchOne() throws NonUniqueResultException {
try {
Query query = createQuery(getMetadata().getModifiers(), false);
return (T) getSingleResult(query);
} catch (javax.persistence.NoResultException e) {
logger.log(Level.FINEST, e.getMessage(), e);
return null;
} catch (javax.persistence.NonUniqueResultException e) {
throw new NonUniqueResultException(e);
} finally {
reset();
}
}

 

결과 하나를 제네릭 타입으로 반환한다.

 

결과가 여러개면 NonUniqueResultException이 발생한다

그리고 결과가 없으면 null을 반환한다.

 

 

fetchFirst()

 

결과에 Limit 1을 걸어서 반환한다


      
SELECT * FROM users LIMIT 1

 

 

진짜 보면 볼 수록 잘 만들었다... 다음 글은 Q타입에 대한 설명을 적을 것이다

저작자표시 (새창열림)

'TIL' 카테고리의 다른 글

TIL 2023-12-19 @WebMvcTest 와 Application JPAQueryFactory Bean 등록 오류  (2) 2023.12.19
TIL 2023-12-18 QueryDSL Qclass 살펴보기... 삽질  (0) 2023.12.18
TIL 2023-12-14 정적쿼리 동적쿼리 그리고 QueryDSL 약간  (0) 2023.12.14
TIL 2023-12-13 AOP Logging 구현  (0) 2023.12.13
TIL 2023-12-12 왜 Service를 인터페이스와 구현체로 나눌까?  (0) 2023.12.12
  1. QueryDSL
  2. 기본 문법
'TIL' 카테고리의 다른 글
  • TIL 2023-12-19 @WebMvcTest 와 Application JPAQueryFactory Bean 등록 오류
  • TIL 2023-12-18 QueryDSL Qclass 살펴보기... 삽질
  • TIL 2023-12-14 정적쿼리 동적쿼리 그리고 QueryDSL 약간
  • TIL 2023-12-13 AOP Logging 구현
wonow_
wonow_
꾸준히 성장하는 개발자 WONOW 입니다. 🤗
wonow_
wonow_
wonow_
전체
오늘
어제
  • 분류 전체보기
    • Language
      • JAVA
    • TIL
    • 코딩테스트
      • 프로그래머스
      • 백준
    • 프로젝트
      • JAVA
      • Spring
    • 기타
    • ERROR
      • Spring
    • CS
      • 알고리즘
      • DB
      • Kafka
    • 잡담
    • 활동
      • 척척박사

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 오블완
  • 문자열 돌리기
  • 홀짝 구분하기
  • 공부열심히하자
  • 티스토리 꾸미기
  • 프로그래머스
  • 나는바봉가봉가
  • 문자열 붙여서 출력하기
  • 티스토리챌린지

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
wonow_
TIL 2023-12-15 QueryDSL 기본 사용법
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.