속도가 느린것 외 성능 등
등록 수정은 1건씩 진행되기 때문에 성능과 연관이 없고
주로 성능문제는 조회에서 문제가 발생
지연로딩과 조회성능 최적화 (매우 중요)
주문 + 배송정보 + 회원조회 API 개발
지연로딩 때문에 발생하는 성능문제 단계쩍 해결.
V1. 엔티티를 노출하는 경우
@GetMapping("/api/v1/simple-orders")
public List<order> orderV1(){
List<order> all = orderRepository.findAllByString(new OrderSearch());
return all;
}
1차 문제 = 만약 order 가 member와 delivery와 양방향 연관관계라면
서로 무한루프에 빠지게 된다. (서로 읽어 오려고 시도한다)
1차 해결법 = 양쪽중 한쪽의 필드에 @JsonIgnore를 넣어 막아주면 된다.
2차 문제 = order를 가져오는 order에 member는 fetch가 lazy 지연로딩이다.
그래서 JPA가 조회시점에 프록시 ProxyMember를 만들어서 넘겨주면 되는데
ByteBuddyInterceptor가 들어있게된데.
이걸 읽지못해서 문제발생
2차문제 해결법 = jpa에게 프록시에 대해서 아무조취 안하게 하면 되는데
hibernate5module을 추가하면된다,
그럼 프록시 지연로딩에 대해서는 null값을 반환하게 된다.
설정에 따라 값을 가져올 수도 있지만 가급적 사용x
직접 엔티티 노출을 하지말고 , 지연로딩 설정을 함부로 즉시로딩으로 바꾸면 안된다.
'JPA' 카테고리의 다른 글
| 2월 23일 JPA 간단한 주문조회 V3 (0) | 2023.02.23 |
|---|---|
| 2월 23일 JPA 간단한 주문조회 v2 (0) | 2023.02.23 |
| 2월 22일 JPA 회원조회 V2 (0) | 2023.02.22 |
| 2월 22일 JPA 회원조회 API (0) | 2023.02.22 |
| 2월 22일 JPA 회원수정 API(Rest 스타일) (0) | 2023.02.22 |