JPA 순환참조 해결

KHoney·2022년 8월 17일
0

Java

목록 보기
6/10

두 객체가 양방향참조일 경우, Response로 넘겨주기위해 Json 으로 파싱할때 문제가 발생한다. 두개의 entity가 서로를 계속 불러오면서 똑같은 데이터가 중복되어 나타난다.

flowchart LR
  Post--> Comment-->Post

해결방법

  1. @JsonIgnore
    Json 데이터에 해당 프로퍼티는 null 로 넘어간다.
  2. @JsonManagedReference & @JsonBackReference
    순환참조를 방어하기위한 Annotation이다.
    부모클래스에 @JsonManagedReference, 자식클래스에 @JsonBackReference 를 추가한다.
  3. @JsonIgnoreProperties
    부모 클래스(Post entity)의 Comment 필드에 @JsonIgnoreProperties({"post"}) 를 붙여주면 순환 참조를 막을 수 있다.
  4. DTO 사용
    순환참조 문제는 정확하게 따지면 양방향매핑된 entity 자체를 response로 리턴한데에 있다. Entity 자체를 resturn 하지 말고, dto 객체를 만들어 필요한 데이터만 옮겨담아 return 하면 된다.
  5. 매핑 재설정
    양방향 매핑이 꼭 필요한지 다시 한번 생각해본다, 만약 양쪽에서 접근할 필요가 없다면 단방향으로 변환해주자.
profile
좋은 개발자가 되고싶은

0개의 댓글