# 배치는 부모를 먼저 페이징하고 자식을 IN으로 따로 가져온다 ## Alternative text 조회 코드, Hibernate 세션, feed_items, highlights 네 참여자 사이에서 부모 페이징이 먼저 일어나고 그다음 자식 IN 배치 조회가 일어나는 순서도. ## Long description 조회 코드가 부모 페이지를 요청하면 세션이 feed_items에 부모만 LIMIT으로 조회한다. 돌아온 부모에는 초기화되지 않은 컬렉션 프록시가 붙어 있다. 세션은 그 프록시를 batch fetch size만큼 모아 highlights를 WHERE fk IN 으로 조회하고, 받은 자식 행으로 컬렉션을 채워 조회 코드에 돌려준다. ## Elements and evidence - **조회 코드** (actor): 페이지를 요청하는 애플리케이션 코드 Evidence: L1009–L1010. - **Hibernate 세션** (service): default_batch_fetch_size로 프록시를 모으는 주체 Evidence: L1010–L1012. - **feed_items** (store): 부모 테이블 Evidence: L1009–L1010. - **highlights** (store): 자식 테이블 Evidence: L1010–L1011. ## Relationships - **조회 코드 → Hibernate 세션:** 부모 페이지 요청. Evidence: L1009–L1010. - **Hibernate 세션 → feed_items:** 부모 LIMIT 페이징. Evidence: L1009–L1010. - **feed_items → Hibernate 세션:** 페이지 부모 + 미초기화 프록시. Evidence: L1010–L1012. - **Hibernate 세션 → highlights:** WHERE fk IN (?,…) 배치. Evidence: L1010–L1012. - **highlights → Hibernate 세션:** 자식 행. Evidence: L1010–L1011. - **Hibernate 세션 → 조회 코드:** 부모 + 컬렉션. Evidence: L1012–L1014.