# EAGER 2차 조회는 반환 전에, LAZY highlights 조회는 매핑 접근 뒤에 실행된다 ## Alternative text loadFeed 매핑, Hibernate, PostgreSQL 사이에서 루트 SELECT, EAGER user·page 2차 SELECT, getHighlights 접근, LAZY highlights SELECT가 차례로 일어나는 시퀀스. ## Long description 세 참가자를 왼쪽부터 loadFeed DTO 매핑, Hibernate, PostgreSQL 순으로 읽는다. loadFeed가 findAllBy 파생 쿼리를 호출하면 Hibernate가 PostgreSQL에서 feed_items를 먼저 조회한다. 이어 fetch join되지 않은 EAGER user와 page를 별도의 2차 SELECT로 채우고, 반환 시점까지 로딩된 FeedItem을 loadFeed에 돌려준다. 이후 DTO 매핑이 getHighlights()에 접근하면 Hibernate가 해당 아이템의 highlights 컬렉션 SELECT를 실행한다. 이때 나가는 SQL 원문은 SELECT * FROM highlights WHERE feed_item_id = ? 이다. ## Elements and evidence - **loadFeed DTO 매핑** (participant): FeedItem을 순회하며 응답 DTO를 조립하고 highlights 게터에 접근하는 호출자. Evidence: L356–L356, L519–L522. - **Hibernate** (participant): 파생 쿼리의 루트 조회와 EAGER 2차 SELECT, LAZY 컬렉션 초기화를 수행하는 JPA provider. Evidence: L354–L356. - **PostgreSQL** (participant): Hibernate가 루트 및 연관 SELECT를 실행하는 데이터베이스. Evidence: L480–L487, L515–L515. ## Relationships - **loadFeed DTO 매핑 → Hibernate:** findAllBy(...). Evidence: L354–L354. - **Hibernate → PostgreSQL:** SELECT feed_items. Evidence: L354–L354. - **Hibernate → PostgreSQL:** SELECT user / page · EAGER 2차. Evidence: L352–L355. - **Hibernate → loadFeed DTO 매핑:** EAGER 연관이 채워진 FeedItem 반환. Evidence: L352–L354. - **loadFeed DTO 매핑 → Hibernate:** 매핑 중 getHighlights() 접근. Evidence: L356–L356, L519–L522. - **Hibernate → PostgreSQL:** SELECT highlights · LAZY 초기화. Evidence: L356–L356, L493–L495.