[Java] StackOverflow Error

Yeoonnii·2022년 10월 7일
0

Java

목록 보기
6/30
post-thumbnail

stackoverflow Error

BoardBoardReply사이에 1:N 양방향 매핑이 되어있는데
Board에서 List<BoardReply>를 조회하는 경우
조회된 BoardReplyBoard를 다시 조회하고,
다시 조회된 Board는 List<BoardReply>를 또 다시 조회하면서
BoardBoardReply사이의 사이클이 생성되며 무한루프에 빠지게 된다

💡 해결방법

🌎 링크참조
1. 양방향 관계에서 직렬화 방향을 설정해주어 순환참조를 해결할 수 있도록 설계된 annotation을 @JsonManagedReference 또는 @JsonBackReference를 사용한다!

  • @JsonManagedReference
    ➡️ 연관관계의 주인의 반대 entity에 선언한다
    직렬화를 정상적으로 수행하도록 한다
  • @JsonBackReference
    ➡️ 연관관계의 주인 entity에 선언한다
    직렬화가 진행되지 않도록 수행한다
  1. 해당데이터를 포함시키지 않는 어노테이션 @JsomIgnore 을 사용한다
    이 어노테이션을 사용하면 JSON 데이터에 해당 프로퍼티는 null로 들어가게 된다

  2. DTO를 사용
    순환참조의 상황이 발생한 주 원인은 양방향 매핑이기도 하지만, 더 정확하게는 entity를 직접 반환한것이 순환참조 발생의 큰 원인중 하나이다
    ➡️ entity 자체를 return 하는것이 아니라, DTO객체를 만들어 필요한 데이터만 반환하면 순환참조 관련 문제를 사전에 방지 할 수 있다

0개의 댓글