JPA Lazy Loading과 Eager Loading 성능 비교
로딩 전략의 역사와 필요성 ORM(Object-Relational Mapping) 프레임워크는 객체지향 프로그래밍과 관계형 데이터베이스 사이의 불일치를 해결하기 위해 등장했다. 이 과정에서 연관관계를 가진 엔티티를 어떻게 효율적으로 로딩할 것인가는 중요한 과제가 되었다. 초기 ORM 구현체들은 모든 연관 엔티티를 즉시 로딩하는 방식을 사용했지만, 이는 불필요한 데이터까지 메모리에 적재해 성능 저하를 일으켰다. Hibernate는 이를 해결하기 위해 프록시 기반의 지연 로딩 메커니즘을 도입했다. Hibernate는 2001년 처음 공개된 이후 로딩 전략을 지속적으로 개선해왔다. 초기 버전에서는 단순한 지연 로딩만 지원했지만, 이후 fetch join, batch fetching, subselect fetching 등 다양한 최적화 기법이 추가되었다. 이러한 기능들은 2006년 공개된 JPA(Java Persistence API) 1.0 표준에 반영되었고, JPA 2.0(2009년)과 JPA 2.1(2013년)을 거치며 @EntityGraph 같은 선언적 페치 전략도 도입되었다. 현재는 JPA 표준과 Hibernate 구현체가 함께 발전하면서 개발자에게 다양한 로딩 전략을 제공하고 있다. ...