본문 바로가기
웹개발/Springboot

양방향 매핑 - @OneToMany, @JasonIgnoreProperties

by HoPpangg 2021. 7. 17.
SMALL

참고해주세요!

 


데이터 베이스에 데이터가 여러개 있을 때

post 테이블
user 테이블

양방향 조인을 하기 위해서 user 테이블에 있는 컬렉션에도 @OneToMany annotation을 붙여줍니다.

여기서 @OneToMany annotation에 mappedBy 는 foreign 키의 주인이 아니라는 뜻 입니다.

PostApiController

이런 상황에서 브라우저에서 전체 데이터에 대해서 접근을 한다면

이렇게 조인을 잘 해서 출력해줌

하지만 아이디를 통해서 찾으려고 하면

PostApiController

서로 양쪽에서 조인하기 때문에 무한 조인이 됩니다.

post에서 user 변수 값을 가져오기 위해 조인된 user 모델에서 데이터를 가져오려고 하면 post 컬랙션 정보를 또 가져오기 위해 post 모델로 가게되는 무한루프에 빠지게 됩니다. 

User

@JsonIgnoreProperties annotation을 붙여 무한 조인을 멈춰줍니다.

@JsonIgnoreProperties annotation({"user"}) 를 하면 post 테이블에 있는 user는 조인 시 파싱하지 말라는 뜻이 됩니다.

이렇게 되면 무한 조인을 멈출 수 있습니다.

제대로 나오는 것을 볼 수 있습니다.

 

728x90
LIST

'웹개발 > Springboot' 카테고리의 다른 글

ORM / 양방향 매핑 원리  (0) 2021.07.17
DB 데이터 활용하기 - jpa 테이블 join  (0) 2021.07.04
DB 데이터 활용하기 - 테이블 join  (0) 2021.07.03

댓글