https://techblog.woowahan.com/2595/
Legacy DB의 JPA Entity Mapping (복합키 매핑 편) | 우아한형제들 기술블로그
{{item.name}} 안녕하세요. 우아한형제들에서 배달의민족 서비스의 광고시스템을 개발하고 있습니다. 시스템을 점진적으로 Spring Boot / JPA 기반으로 이관하면서 경험했던 내용을 공유하고자 합니다.
techblog.woowahan.com
사이드 프로젝트를 하면서 다대다 관계에 많은 고민을 하게 되었는데 구글에 검색해보니 많은 분들이 JPA에서 다대다 관계 즉, M:N관계를 설정할때 많은 고민을 하는 것 같습니다.
결론부터 말하자면 M:N, 다대다 관계는 중간에 엔티티를 하나 두는 방식을 사용하는 것을 권장하고 있습니다.
개발자들 사이에 다대다 관계를 설정할 때 JPA @Manytomany 기능을 사용하지 않는것은 국룰로 자리잡고 있는것 같습니다.
그건 @Manytomany의 특성 때문에 그렇습니다. 개발자가 예상하지 못하는 쿼리들이 생각보다 많이 나가고 그 때문에 성능이 많이 떨어집니다.
JPA, Hibernate 연관관계 정리
@ManyToOne 가장 흔한 어노테이션으로 관계형 데이터베이스가 관계를 맺는 방식과 유사합니다. ex) @ManyToOne 연관관계가 설정이 되면, 하이버네이트가 데이터베이스 외래키를 설정하게 됩니다. @OneTo
dingue.tistory.com
이분 블로그에 은근 잘 정리되어 있는데 요약해보면 cascade옵션 때문에 삭제되는 데이터와 연관된 모든 데이터를 일단 지우고 필요한 데이터는 다시 insert 하는 구조로 진행됩니다.
굳이굳이 다 지워놓고 1,3을 insert 합니다.
이러한 예측할 수 없는 쿼리등의 문제로 manytomany는 활용을 지양하는 편입니다.
'IT 이야기 > Java' 카테고리의 다른 글
[JWT] Java Web Token (0) | 2021.11.02 |
---|---|
[JPA] UUID로 findBy 조회가 안되는 이유 (0) | 2021.08.15 |
springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: JsonObject; (1) | 2021.08.08 |
[Bean] JAVA vs Spring (0) | 2021.07.27 |
JPA Default value 적용 - @DynamicInsert (0) | 2021.07.20 |
댓글