- 즉시 로딩에 대해 파악한다.
- 지연 로딩에 대해 파악한다.
- 프록시에 대해 모른다면 JPA 프록시를 보고오자.
- 즉시 로딩 : 조회하는 엔티티가 참조하는 엔티티도 JOIN query를 사용해 함께 조회한다.
즉시 로딩 주의점
- 실무에서 즉시 로딩은 쓸 일이 없다. 지연 로딩만 사용하자.
- JPQL에서 N+1 문제(최초 query가 개 query 실행)를 야기할 수 있다.
@ManyToOne
,@OneToOne
는 default가 즉시 로딩이다.
- 지연 로딩으로 바꿔서 사용하자.
Member를 조회할 때 항상 Team도 같이 조회해야 할까?
- 그렇지 않다. 지연 로딩에 대해 알아보자.
- 지연 로딩 : 연관된 엔티티는 프록시 객체로 조회한다.
- 이후 Member에서 Team을 조회하고자 할 때 프록시 객체를 초기화하여 사용한다.
- 이를 통해 불필요한 정보를 DB에서 찾지 않게되어 성능이 향상된다.
@OneToMany
,@ManyToMany
은 default가 지연 로딩이다.
결론 : 연관관계 매핑은 전부 다 지연 로딩으로 하자.