@ManyToMany의 해결 방법과 단방향 맵핑

크리링·2023년 2월 16일
0

오늘의 문제

목록 보기
3/9
post-thumbnail

이전 내용 : @ElementCollection와 @ManyToMany

요약하자면 이전에 시도했던 도메인에 Collection 형태의 칼럼을 가지고 싶어서 @ElementCollection 찾았고, 결국에 원하는 구조가 @ManyToMany 식의 관계였는데 @ManyToOne@OneToMany 방식을 섞어서 중간에 매핑 테이블을 엔티티로 승격시켜 관리하기로 설계하였다.

오류 내용

테스트 코드까지 모두 잘 돌아가 문제가 없어보였지만 실제로는 양방향 매핑으로 스택 오버플로우 오류가 발견되었다. 바로 양방향으로 설계되어서 참조하는 테이블에서 매핑 테이블을 조인하고 매핑 테이블에서는 다시 참조하는 테이블을 조회하여 무한 루프가 발생한 것이었다.






원인

해당 이미지를 참고해서 양방향 구조로 도메인 간의 관계를 설계하였다. 조회하는 과정에서 참조하는 테이블에서 매핑하는 테이블로 가고, 매핑하는 테이블에는 두 테이블에 대한 정보가 모두 있으므로 또 다시 참조하는 테이블을 매핑하여 반복이 발생한 것이었다.

예제 및 참고 : [Spring] 다대다 관계 맵핑





해결 방법

매핑 방법을 매핑 테이블에서 주는 방향으로 단방향으로 바꾸었다. 편리하게 엔티티 내에서 일대다 자료형으로 받으려는 목적은 양방향으로 이룰 수는 없었던 것 같다. 그래도 원래 이루고자 했던 테이블 간의 관계를 객체화해서 DB에 저장할 수 있었다.

0개의 댓글