Section 1. 즉시로딩
1. 즉시로딩
엔티티를 조회할 때 연관된 엔티티도 함께 조회하는 Fetch EAGER 타입
2. 즉시로딩 테스트
- OrderItem 객체 조회
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Feb2522ac-3797-4bbc-bac6-d94b266375a2%2Fimage.png)
3. 즉시로딩 select 쿼리문
- OrderItem 엔티티와 연관된 엔티티를 조회하고 연관된 엔티티의 연관된 엔티티 또한 조회
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F92d8e6dd-56a9-4d80-9c1f-9a5001f66ebe%2Fimage.png)
Section 2. 지연로딩
1. 지연로딩
연관된 엔티티는 사용할 때 조회하는 Fetch LAZY 타입
- 실제 비즈니스 구현 시 매핑되는 엔티티의 개수 ↑
- 사용하지 않는 데이터도 한꺼번에 조회하므로 성능 ↓
2. 지연로딩 설정
- @ManyToOne 어노테이션에 fetch 설정 지정
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Ff93093da-a3eb-428c-ba12-6866e7e318d4%2Fimage.png)
3. 지연로딩 테스트
- OrderItem 객체 조회
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Fe2e81f1e-a072-4e3d-bd1e-f75741b85aa6%2Fimage.png)
- orderItem.getOrder().getClass() 수행 결과
- 실제 객체가 아닌 프록시 객체를 넣어둠
- 프록시 객체는 실제 사용 시점에 조회 쿼리문이 실행됨
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F2ac91fcf-aa51-4569-b593-23c9cbcff3bd%2Fimage.png)
- orderItem.getOrder().getOrderDate() 수행 결과
- 실제 사용 시점에 select 쿼리문이 수행됨
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Fafddafc0-4bfd-4b3f-847e-bec64eb76839%2Fimage.png)
4. 연관 관계 매핑 지연로딩 설정
- 연관 관계가 맺어진 엔티티의 fetch 전략을 모두 LAZY 로 설정