-> board select 1번
-> board select 1번 + user(song) select 1번+ user(park) select 1번 (3번)
원래는 user 20번 select 해야하지만 song, park 캐싱해서 가져옴
-> 만약 EAGER로 바꾸면, board select 1번 + user select 1번 (2번)
N + 1 정리
board 1000개, 1000개 전부 각기 다른 user가 작성
Board의 user는 LAZY 상태
findAll()
1. board 1 ~ board 1000 SELECT 한번에 (1번) -> 영속성 컨텍스트에 존재
2. 각 board에 딸린 user 전부 LAZY로딩 (1000번)
3. N + 1 문제 발생(PageRequest가 이런 상태가 된다.)해결방법
1. join fetch -> board(1000) + user(1000) select (1번)
2. in-query -> user 만 가져와서(distinct 사용) -> board 사용 (select 2번)
PageRequest 안한 이유?
쿼리가 N + 1 문제가 발생함....