본문 바로가기

dev/JPA

JPA Infinite Recursion 예외 처리

JPA에서 양방향 참조인 엔티티를 조회해서 json으로 리턴하는 경우

 

다음과 같이 Infinite Recursion 예외가 발생할 수 있습니다.

 

json 조회 화면

 

로그 화면

 

로그 화면이 작아서 잘 안 보이지만

 

양방향 참조인 엔티티를 json으로 리턴할 때 무한 재귀 현상이 발생하고 있습니다.

 

직원 엔티티 클래스

 

팀 엔티티 클래스

 

현재 직원 엔티티와 팀 엔티티가 서로 참조하고 있습니다.

 

이 문제를 해결하기 위해서는

 

직원 엔티티에 @JsonBackReference 어노테이션을 추가하고

 

팀 엔티티에 @JsonManagedReference 어노테이션을 추가하면 됩니다.

 

직원 엔티티 클래스

 

@JsonBackReference 어노테이션은 연관관계 주인 엔티티에 선언되고 직렬화에서 제외됩니다.

 

팀 엔티티 클래스

 

@JsonManagedReference 어노테이션은 연관관계 주인이 아닌 엔티티에 선언되고 직렬화에 포함됩니다.

 

json 조회 화면

 

다시 조회하면 위와 같이 정상적으로 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