작성
·
415
0
답변 2
0
0
안녕하세요.
말씀하신 manyToMany 사용시 발생하는 문제들에 대해 조금 더 자세히 알 수 있을까요? 어느 자료를 참고하면 해당 정보를 알 수 있을까요?
제가 ManyToMany나 ManyToOne 또는 OneToMany 등을 사용하는 기준은 어디까지나 도메인 로직상 해당 엔티티 간의 관계만을 생각해서 정할 뿐 기술적인 문제 때문에 ManyToMany를 피하진 않았거든요.
말씀하시는게 관계형 DB에서의 다대다 관계라면 이야기가 다르겠지만요.
"엔티티로 관리되지 않는 테이블의 생성"이라는게 잘 이해가 되지 않네요. @ManyToMany와 @JoinTable을 사용해서 엔티티로 관리하는 테이블이 생성되는데 어떤 테이블이 왜 관리가 안되다고 하는 것인지 설명 해 주시겠어요?
지금 예제에서 many to many로 매핑된 연관관계를보면
Account_Tags Account_zones 와같이 엔티티로서 정의하지 않은 테이블이 생겼는데
실제 실무에서 Account_tags에 baseEntity가 삽입되어야 한다던지
따로 관리해줘야할 칼럼이 생긴다던지 하는 부가적인 문제에 대응때문에 실무에서 사용하지 않는 매핑
이라고 학습하였습니다
조인테이블 어노테이션 또한 컬럼을 추가하게되면 사용할 수 없는것으로 알고 있습니다
혹시 제가 잘못이해한 부분이 있나요?
Account_Tags와 Account_Zones에 들어가는 정보는 결국에 Account, Tags, Zones에 정의되어있는 ID들입니다. 엔티티에 들어있고 애노테이션으로 정의한 정보를 기반으로 테이블이 생기는데, 엔티티로 정의한 테이블이 아닌 조인 테이블이 생긴다고 해서 "엔티티에서 관리하지 않는"다고 말할 수는 없다고 생각합니다.
그리고 말씀하고 계신 경우는 조인 테이블에 추가 컬럼을 정의해야 하는 경우를 말씀하시는데, 그런 경우엔 당연히 다대다 맵핑이 아닌 일대다 맵핑으로 풀어서 정의하고 컬럼을 추가하는게 맞습니다.
"엔티티로 관리되지 않는다"라는 말씀이 조인 테이블에 컬럼을 추가할 수 없다는 말이었다면 말씀하신게 다 맞습니다.
제가 설명을 잘못한것같습니다 DB관계에서의 다대다 매핑의 문제점에 관한 고민이었습니다
말씀하신대로 관계형 db에서 정규화된 테이블로 다대다 관게를 표현하기에 어려움이 있는데
스프링에서 manyTo many로 매핑하면 실제 테이블과 코드가 다른 문제가 발생한다고 생각합니다
제가 참고한 자료는 타 강사님의 강의에서 N:M은 1:n M:1로 풀어서 작성해주는것이 좋다고 했고
그 이유로는 엔티티로서 관리되지 않는 테이블의 생성으로 인한 문제를 예시로 들었던것으로
기억합니다 두 강사님의 코딩 스타일로 이해를 하고 가면되는부분인지 제가 좀 더 학습해야 할 부분인지 기준이 서지않아 질문드립니다