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 | 29 | 30 |
Tags
- java set 저장
- java참조자료형
- java최솟값구하기
- 프로그래머스
- 프로그래머스제일작은수
- java기본자료형
- java list 저장
- java 자료구조 활용
- java map
- java list 출력
- java set 출력
- javaJVM
- 격파르타후기
- java알고리즘
- 항해15기
- 비전공자sqld
- 격파르타합격후기
- 격파르타비전공자
- 코딩부트캠프후기
- 작은수제거하기
- 인터프린터언어
- 노베이스부트캠프
- 격파르타장점
- 컴파일
- sqld자격증합격
- 항해99후기
- java map 출력
- java알고리즘문제풀이
- javaJRE
- java map 저장
Archives
- Today
- Total
코딩과 결혼합니다
[JPA] 지연 로딩과 조회 성능 최적화(3) 본문
728x90
https://coding-s2-chaewon.tistory.com/253
[JPA] 지연 로딩과 조회 성능 최적화(2)
https://coding-s2-chaewon.tistory.com/252 [JPA] 지연 로딩과 조회 성능 최적화(1) 등록이나 수정 등은 데이터 한 건을 다루는 것이기 때문에 거의 성능 문제가 발생하지 않는다. 주로 조회하는 데에 문제가
coding-s2-chaewon.tistory.com
@GetMapping("/api/v4/simple-orders")
public List<OrderSimpleQueryDto> ordersV4() {
return orderSimpleQueryRepository.findOrderDtos();
}
JPA에서 DTO로 바로 조회하는 방법이다.
이전의 fetch join을 사용한 것 처럼 쿼리 1번에 호출한다.
@Repository
@RequiredArgsConstructor
public class OrderSimpleQueryRepository {
private final EntityManager em;
public List<OrderSimpleQueryDto> findOrderDtos() {
return em.createQuery(
"select new jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryDto(o.id, m.name, o.orderDate, o.status, d.address) " +
" from Order o" +
" join o.member m" +
" join o.delivery d", OrderSimpleQueryDto.class
).getResultList();
}
}
- new 명령어를 사용해서 JPAL 의 결과를 DTO로 즉시 변환
- select 절에서 원하는 데이터만 선택해서 조회한다.
재사용성
깔끔하게 내가 원하는 데이터만 얻을 수 있지만 리포지토리 재사용성이 떨어진다는 단점이있다.
API 스펙에 맞춘 코드가 리포지토리에 들어가기 때문이다.
엔티티를 DTO로 변환하거나, DTO로 바로 조회하는 두가지 방법의 장단점을 이해하고, 상황에 따라 더 나은 방법을 선택하면 된다.
'2세 > JPA' 카테고리의 다른 글
[Spring Data JPA] 순수 JPA와 Spring Data JPA (0) | 2024.02.27 |
---|---|
[JPA] 컬렉션 조회 최적화(1) (0) | 2024.02.25 |
[JPA] 영속성 전이(CASCADE), 고아 객체 (0) | 2024.02.23 |
[JPA] 프록시 - 즉시 로딩과 지연 로딩 (0) | 2024.02.22 |
[JPA] 프록시 (0) | 2024.02.21 |