PROJECT/DocViewer_Web

Lazy, Eager 사용시 JSON 오류

최뭉뭉 2022. 9. 8. 12:43

현재 문서 게시판 작업을 하고 있는데 자꾸 의견 리스트를 조회하려고 할때 이런 오류가 떠서 난감쓰.,.,

 

@GetMapping("/v1/opinions/{eventId}")
public List<OpinionResponseDto> findAllByEvent(@RequestParam final char deleteYn, @PathVariable Long eventId) throws Exception {

    return opinionService.findAllByEvent(deleteYn, eventId);
}

각 이벤트에 해당하는 의견리스트를 가져오는 GetMapping이었는데 Dto쪽을 아무리 봐도 오타도 없고 왜 이런 오류가 나는지 의문이었다.

 

 

기존에 웹개발자분이 작성해둔 코드랑 비교해보니 다른 점은

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "event_id")
private Event event;

FetchType.EAGER 부분을 찾아보니 LAZY로 처리하는게 좋다고 해서 LAZY로 바꿔뒀었는데 거기서 발생한 문제였다

추측으로는, 의견 리스트를 가져올때 이벤트 ID로 가져오는데 이벤트를 지연로딩으로 해두면 검색할때 이벤트가 아직 생성이 안된...? 그런 문제가 아닐까 생각이 든다

 

보통은 지연로딩으로 쓰는게 좋다고는 하지만 이렇게 빠르게 값이 필요한 상황에서는 즉시로딩으로 처리하는 것이 맞는것 같다. 때에 따라서 적절히 섞어 사용하는 걸로...

이렇게 또 하나 배워갑니다