JPA에서 양방향 참조인 엔티티를 조회해서 json으로 리턴하는 경우
다음과 같이 Infinite Recursion 예외가 발생할 수 있습니다.
로그 화면이 작아서 잘 안 보이지만
양방향 참조인 엔티티를 json으로 리턴할 때 무한 재귀 현상이 발생하고 있습니다.
현재 직원 엔티티와 팀 엔티티가 서로 참조하고 있습니다.
이 문제를 해결하기 위해서는
직원 엔티티에 @JsonBackReference 어노테이션을 추가하고
팀 엔티티에 @JsonManagedReference 어노테이션을 추가하면 됩니다.
@JsonBackReference 어노테이션은 연관관계 주인 엔티티에 선언되고 직렬화에서 제외됩니다.
@JsonManagedReference 어노테이션은 연관관계 주인이 아닌 엔티티에 선언되고 직렬화에 포함됩니다.
다시 조회하면 위와 같이 정상적으로 json이 조회되는 것을 확인할 수 있습니다.
정리하면 외래키를 가지고 참조하는 엔티티, 연관관계 주인 엔티티에 @JsonBackReference 어노테이션을 선언하고
참조받는 엔티티, 연관관계 주인이 아닌 엔티티에 @JsonManagedReference 어노테이션을 선언하면 됩니다.
'dev > JPA' 카테고리의 다른 글
JPA Insert Batch (0) | 2023.08.30 |
---|---|
JPA ID SEQUENCE (0) | 2023.08.30 |
Spring Boot JPA QueryDSL (0) | 2023.08.29 |
Spring Boot JPA ID IDENTITY (0) | 2023.08.28 |
Spring Boot JPA Join (0) | 2023.08.28 |