✅ Lazy VS Eager

구분 설명
Lazy Loading (지연 로딩) 실제로 참조할 때 DB 쿼리가 실행됨. Proxy 객체로 지연시킴
Eager Loading (즉시 로딩) 연관된 엔티티를 항상 함께 조회 (JOIN 쿼리로 즉시 로딩)

✅ 지연 로딩의 동작 구조

val order = orderRepositoryfindById(1L)
val member = order.member // 여기서는 프록시 객체
print(member.name) // 이때 실제 SELECT 발생

✅ N + 1 문제

val orders = orderRepository.findAll()
for(order in orders) {
	println(order.member.name) // 각 order 엔티티마다 member 조회 SELECT 발생
}

✅ 지연 로딩의 최적화 전략

✅ 대규모 프로젝트에서의 선택