jnk1m
Foliage IT
jnk1m
전체 방문자
오늘
어제
  • 분류 전체보기 (209)
    • Today I Learned (34)
    • Java (47)
    • Database (15)
    • [NHN Academy] (27)
    • Spring (47)
    • HTML + CSS + JavaScript (11)
    • JSP (3)
    • Node.js (10)
    • React Native (2)
    • 기타 (8)
    • 스크랩 (5)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
jnk1m
Today I Learned

[TIL] 23/7/12 JPQL DTO 프로젝션

Today I Learned

[TIL] 23/7/12 JPQL DTO 프로젝션

2023. 7. 13. 16:55

JPQL DTO 프로젝션 하는 법


DTO 프로젝션: 엔티티에서 원하는 필드만 선택하여 쿼리 결과로 반환하는 방법

  1. DTO 클래스 작성: 원하는 필드를 가지고 있는 DTO 클래스를 작성한다. 해당 필드를 담는 생성자 및 Getter 메서드는 필수. 
  2. JPQL 쿼리 작성: SELECT 절에서는 엔티티 대신 DTO 클래스의 생성자를 사용하여 원하는 필드에 값이 들어가도록 작성한다. FROM절에는 엔티티를 지정하기.
@Query("SELECT new com.ohouse.ohouse.domain.UserCartDTO(" +
          "cart.cartId, cart.user.userId, cart.menu.menuId, cart.quantity, " +
          "co.cart.cartId, co.cartOptionId, co.option.optionId) " +
          "from Cart cart " +
          "left join CartOption co on cart.cartId = co.cart.cartId " +
          "where cart.user.userId = :userId")
  List<UserCartDTO> findCartByUser(int userId);

SELECT절에는 프로젝션 할 DTO 클래스의 위치를 넣고 new 해주기 👉 DTO 생성자를 이용해서 초기화하기

 

    'Today I Learned' 카테고리의 다른 글
    • [TIL] 23/07/17 장바구니 삭제 구현
    • [TIL] 23/7/13 장바구니 리스트 쿼리문 성능 개선 고민
    • [TIL] 23/07/11 장바구니 담기 기능 구현 중
    • [TIL] 23/07/06 AWS 인스턴스 재부팅 후 502 에러, 대상 그룹 Unhealthy 해결

    티스토리툴바

    단축키

    내 블로그

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

    블로그 게시글

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

    모든 영역

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

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