fetch join

    페치 조인 (Fetch Join)

    페치 조인 (Fetch Join)

    JPQL에서 성능 최적화를 위해 제공하는 기능이다. 연관된 엔티티나 컬렉션을 한 번의 SQL로 모두 조회하는 기능이다. join fetch를 이용한다. // jpql select m from Member m join fetch m.team // SQL select m.*, T.* from Member m inner join team t on m.team_id = t.id List resultList = em.createQuery("select m from Member m", Member.class).getResultList(); for (Member member1 : resultList) { System.out.println("member1.getUsername() = " + member1.getUser..

    [API 개발 고급] 지연 로딩과 조회 성능 최적화

    [API 개발 고급] 지연 로딩과 조회 성능 최적화

    “김영한 강사님의 JPA 활용편 2 - API 개발과 성능 최적화"를 듣고 간단하게 정리하기” 양방향 연관관계에서 직접 데이터를 반환하는 경우 서로가 서로를 참조하기 때문에 무한루프가 발생한다. Order -> Member -> Order -> Member ... 무한루프발생! 양방향 연관관계가 매핑된 엔티티 한 쪽에는 @JsonIgnore를 사용한다. 지연로딩으로 설정된 값은 DB에서 가져오지 않고 가짜 Proxy 객체를 생성하고 실제 객체에 접근하고자 할때 그 때 프록시가 쿼리를 날려서 DB에서 값을 가져온다. Hibernate5Module와 @JsonIgnore를 이용해 엔티티를 넘긴 경우 무한루프 없이 데이터를 조회해 오는 것이 가능하다. 지연 로딩을 피하기 위해서 즉시 로딩 (EAGER)로 변경..