fetch join 2

[JAVA] 지연로딩과 조회 성능 최적화

주문 + 배송정보 + 회원을 조회하는 API를 만들자 지연 로딩때문에 발생하는 성능 문제를 단계적으로 해결해보자. 1. 엔티티를 직접 노출 (실무에서는 엔티티를 노출하는 일은 없으니 가볍게 보고 넘기기로 하자.) @GetMapping("/api/v1/simple-orders") public List ordersV1(){ List all = orderRepository.findAll(); return all; } 위에 코드는 엔티티를 직접 노출하는 개발 방식 양방향 연관관계일때 문제가 생김 → 무한루프에 빠져버림 (잘못된 코드) 이러한 경우 양방향이 걸리는데를 다 @JsonIgnore 를 걸어줘야함 → 그렇다면 무한 루프가 생기는 일은 피할 수 있지만 지연로딩 관련한 문제는 해결되지 않는다. 지연로딩으로 ..

JAVA 2022.05.19

[JAVA] fetch join

실무에서 너무 자주쓰임 중요! SQL 조인의 종류가 아님 JPQL에서 성능 최적화를 위해 제공하는 기능 연관된 엔티티나 컬렉션을 SQL 한번에 함께 조회( 한방 쿼리 ) join fetch 명령어 사용 회원을 조회하면서 연관된 팀도 함께 조회(SQL 한번에) SQL을 보면 회원 뿐만 아니라 팀(T.*) 도 함께 select 함 예시 ) 회원 1, 2는 팀 A / 회원3은 팀B 라고 가정한다. 1. 일반 조인을 사용했을 시 String query = "select m from Member m join m.team t"; List findMember = em.createQuery(query, Member.class).getResultList(); // 이때의 결과값은 프록시 데이터 이때 회원리스트를 뽑아 콘..

JAVA 2022.01.18