관리 메뉴

IT.FARMER

Jpa JSON 순환참조 @ResponseBody 본문

Spring/Spring Data JPA

Jpa JSON 순환참조 @ResponseBody

아이티.파머 2017. 9. 21. 16:43
반응형

ORM Jpa @ResponseBody  재귀 memory error

 

ORM을 이용하다보면 @ResponseBody 에서 자동으로 마샬링 언마샬링시에 무한 재귀에 빠지게 된다.

이때 부모자식과 같은 관계를 갖는 객체는 원하는 형태에 따라 다음과 같은 @Annotation을 붙여 주어야 한다.  

 

@JsonBackReference 는 순환참조의 역할을 끝어주게 되며,  해당 객체가 마샬릴될때  대상에서 제외 된다. 

즉 양방향의 JSON 마샬링을 할 수 없는 단점 존재한다. 양방양이 가능한 @JsonIdentityInfo(http://springquay.blogspot.kr/2016/01/new-approach-to-solve-json-recursive.html) 있지만 같은 객체에대한 마샬링은 해주지 않고 참조만 하고 있어, 언마샬링구조엔 맞지 않고 다시 호출해주어야 한다. 

 

Parent Class

@OneToMany(mappedBy = "users" , fetch = FetchType.LAZY)
@JsonManagedReference
private List<Just> justs;

 

Child Class

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "email", referencedColumnName = "email", insertable = false, updatable = false)
@JsonBackReference
private Users users;
 

 

반응형