지연 로딩

    즉시 로딩과 지연 로딩

    즉시 로딩과 지연 로딩

    지연 로딩을 통해 연관관계 데이터를 실제 조회 시점에 가져오는 것이 가능하다. fetch = FetchType.LAZY @ManyToOne(fetch = FetchType.LAZY) // 지연 로딩으로 세팅 @JoinColumn(name = "TEAM_ID") private Team team; 연관 관계 엔티티를 지연 로딩으로 세팅하면 프록시로 가져온다. 지연 로딩으로 가져온 엔티티는 실제 값을 사용하는 시점에 프록시를 초기화한다. Member member1 = new Member(); member1.setUsername("zayson1"); member1.setTeam(team); // Team의 데이터는 프록시로 가져온다. (Team 조회 쿼리 안날아감) Member member = em.find(M..

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

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

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