jpa repository 사용 시 DTO로 조회하는 방법

개발하는 구황작물·2022년 10월 9일
0

메인 프로젝트

목록 보기
8/10

예전에는 JpaRepository는 엔티티로만 조회가 가능하다고 생각하였다.

하지만 엔티티에서 꼭 필요한 값 들만 조회하고 싶을 때는 DTO를 이용하여 조회가 가능하다는 사실을 알게되었다.

먼저 조회용 DTO를 하나 만든다.

@Getter
public class RoomPriceDto {
    private Long postsId;
    private Integer price;

    public RoomPriceDto(Long postsId, Integer price) {
        this.postsId = postsId;
        this.price = price;
    }
}

이후 repository에 jpql을 이용하여 조회를 한다.

@Query("select new com.team012.server.posts.repository.RoomPriceDto(r.postsId, min(r.price)) " +
            " from Posts p, Room r where p.id = r.postsId group by p.id")
    Page<RoomPriceDto> findAllRoomMinPrice(Pageable pageable);

이때 주의해야 할 점은 DTO 앞에 new와 DTO의 경로를 jpql에 적어줘야 한다는 것이다.
new com.team012.server.posts.repository.RoomPriceDto(r.postsId, min(r.price))

위와 같은 방법으로 내가 원하는 정보만 뽑아내서 조회를 할 수 있게 되었다.

profile
어쩌다보니 개발하게 된 구황작물

0개의 댓글