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