

Board와BoardReply사이에 1:N 양방향 매핑이 되어있는데
Board에서List<BoardReply>를 조회하는 경우
조회된BoardReply는Board를 다시 조회하고,
다시 조회된 Board는List<BoardReply>를 또 다시 조회하면서
Board와BoardReply사이의 사이클이 생성되며 무한루프에 빠지게 된다
🌎 링크참조
1. 양방향 관계에서 직렬화 방향을 설정해주어 순환참조를 해결할 수 있도록 설계된 annotation을 @JsonManagedReference 또는 @JsonBackReference를 사용한다!
@JsonManagedReference
➡️ 연관관계의 주인의 반대 entity에 선언한다
직렬화를 정상적으로 수행하도록 한다@JsonBackReference
➡️ 연관관계의 주인 entity에 선언한다
직렬화가 진행되지 않도록 수행한다
해당데이터를 포함시키지 않는 어노테이션 @JsomIgnore 을 사용한다
이 어노테이션을 사용하면 JSON 데이터에 해당 프로퍼티는 null로 들어가게 된다
DTO를 사용
순환참조의 상황이 발생한 주 원인은 양방향 매핑이기도 하지만, 더 정확하게는 entity를 직접 반환한것이 순환참조 발생의 큰 원인중 하나이다
➡️ entity 자체를 return 하는것이 아니라, DTO객체를 만들어 필요한 데이터만 반환하면 순환참조 관련 문제를 사전에 방지 할 수 있다