-
Notifications
You must be signed in to change notification settings - Fork 3
양방향 연관관계에서 순환참조가 발생하는 문제
N a t a s h a edited this page Dec 12, 2022
·
3 revisions
JPA에서 양방향으로 연결된 엔티티를 JSON 형태로 직렬화하는 과정에서, 서로의 정보를 계속 순환하며 참조하여 StackOverflowError를 발생시키는 순환 참조가 발생
양방향 관계에서 직렬화 방향을 설정하여 순환 참조를 해결할 수 있도록 설계된 애노테이션
@JsonManagedReference : 연관관계 주인 반대 Entity 에 선언, 정상적으로 직렬화 수행
@JsonBackReference : 연관관계의 주인 Entity 에 선언, 직렬화가 되지 않도록 수행
양방향 관계를 가지고 있는 두 엔티티 중 하나의 엔티티의 참조 필드에 직렬화를 제외시키는 방법 JSON 직렬화 과정에서 해당 애노테이션이 선언된 필드는 직렬화 대상에서 제외 해당 필드가 직렬화에 필요할 경우에는 적합하지 않은 방법
Entity 클래스는 데이터베이스와 맞닿는 핵심 클래스이며 Entity 클래스를 기준으로 수많은 클래스나 비즈니스 로직들이 동작하고 있다. Entity 클래스를 통해 여러 클래스들이 영향을 받을 수 있으므로 Entity 클래스를 Request/Response 클래스로 사용하는 것은 피할 수 있도록 가능하면 해결방안 1번 DTO로 반환하고 그렇지 못한 곳에서는 해결방안 2번 @JsonManagedReference & @JsonBackReference을 사용하여 순환참조를 해결했다.