메모장
JPA 즉시 로딩과 지연 로딩 본문
- 지연 로딩 LAZY를 사용해서 프록시로 조회
@Entity public class Member {
@Id
@GeneratedValue
private Long id;
@Column(name = "USERNAME")
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TEAM_ID")
private Team team;
..
}
Team team = member.getTeam();
team.getName(); // 실제 team을 사용하는 시점에 초기화(DB 조회)
- 즉시 로딩 EAGER를 사용해서 함께 조회
@Entity
public class Member {
@Id
@GeneratedValue
private Long id;
@Column(name = "USERNAME")
private String name;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "TEAM_ID")
private Team team;
..
}
Member 조회시 항상 Team도 조회
- 프록시와 즉시로딩 주의
- 가급적 지연로딩만 사용(특히 실무에서)
- @ManyToOne, @OneToOne은 기본이 즉시 로딩 -> LAZY로 설정
- @OneToMany, @ManyToMany는 기본이 지연 로딩
'Java' 카테고리의 다른 글
JPA Transaction 분리하고 싶을 때 (0) | 2022.04.10 |
---|---|
JPA delete 다음에 insert 하기 (0) | 2022.04.10 |
JPA @MappedSuperclass (0) | 2022.02.02 |
JPA 상속관계 매핑 (0) | 2022.02.02 |
JPA 연관관계 매핑 (0) | 2022.01.24 |