🚩 지연 로딩 활용

사내 주문 관리 시스템을 개발한다고 가정

모델 분석

애플리케이션 로직 분석

//회원 엔티티@Entity@Getter @Setterpublic class Member{    @Id    private String id;    private String username;    private Integer age;    //회원과 팀 즉시 로딩    @ManyToOne(fetch = FetchType.EAGER)    private Team team;    //회원과 주문 지연 로딩    @OneToMany(mappedBy = "member", fetch = FetchType.LAZY)    private List<Order> orders;}

--회원을 조회할 때 실행된 SQLSELECT    MEMBER.ID AS MEMBERID,    MEMBER.AGE AS AGE,    MEMBER.TEAM_ID AS TEAM_ID,    MEMBER.USERNAME AS USERNAME,    TEAM.ID AS TEAMID,    TEAM.NAME AS NAMEFROM    MEMBER MEMBER LEFT OUTER JOIN TEAM TEAM    ON MEMBER.TEAM_ID = TEAM1_.IDWHERE MEMBER0_.ID = 'member1'

회원과 팀은 FetchType.EAGER로 설정해 조인 쿼리를 만들어 회원과 팀을 한 번에 조회한다.

반면 회원과 주문내역은 FetchType.LAZY로 설정해 결과를 프록시로 조회한다.

따라서 실행된 SQL에 Order는 나타나지 않았다.