해결된 질문
작성
·
554
·
수정됨
0
안녕하세요.
상속관계 매핑을 할 때 예를 들어 위와 같이 Item을 상속받는 Book, Album, Movie, TVSerise의 4개의 품목이 있다고 했을 때, 비슷한 속성끼리 중간에 묶는 방법에 대해 질문드리고 싶습니다.
상속관계를 한 단계 더 쓰고 싶은 이유는 일부 항목들끼리는 자주 엮어서 조회할 일이 있는데 그 때마다 두 객체를 모두 불러오는 게 번거롭게 느껴져서 입니다.
이전에 비슷한 질문을 드렸었는데 김영한 강사님께서 이런 경우 상속관계보다는 연관관계를 사용하기를 추천하신다고 말씀 주셨었어요. 조금만 더 자세히 설명 부탁드리겠습니다.
감사합니다!
ps. 다른 글에서 추천해주신 draw.io 좋아요. 감사합니다.
답변 1
1
예를 들어, 싱글테이블 전략을 사용하신다면 Book, Album, Video, Movie, TVSeries에 모두 @DiscriminatorValue()만 붙여주시고 이름만 서로 다르게 지정해 주시면 매핑할 수 있습니다.
'예를 들어, 싱글테이블 전략을 사용하신다면 Book, Album, Video, Movie, TVSeries에 모두 @DiscriminatorValue()만 붙여주시고 이름만 서로 다르게 지정해 주시면 매핑할 수 있습니다.'
라고 답변 주셨는데
저는 중간의 video 클래스에 어떤 매핑을 해줘야 하는지를 여쭤본겁니다.
말씀주신 상황은 수업에도 나오고 위 답변에도 제가 직접 말씀드린 것 같아요.
예를 들어서 그림에서 중간에 있는 video가 없으면 상속 전략을 SingleTable, JoinedTable, TablePerClass 중 어떤 전략이든지 무방하지만 video에 어떤 애너테이션을 매핑해줘야 하는걸까요?
...
저는 중간의 video 클래스에 어떤 매핑을 해줘야 하는지를 여쭤본겁니다.
라고 말씀하신 것을 저는 다음과 같이 이해했습니다.
멀티레벨 상속구조를 갖게 되는데, video 에는 어떤 애노테이션을 사용해서 매핑해야 하는가?
그래서 아래와 같이 답변했습니다.
예를 들어, 싱글테이블 전략을 사용하신다면 Book, Album, Video, Movie, TVSeries에 모두 @DiscriminatorValue()만 붙여주시고 이름만 서로 다르게 지정해 주시면 매핑할 수 있습니다.
Video도 다른 것들과 동일하게 @DiscriminatorValue()
를 붙이면 된다고 말씀드렸는데, 제가 잘못 이해한 부분이 있다면 조금 더 자세히 설명해 주실 수 있으실까요?
조금 더 명확하게 설명드리자면 Item에 singletable 전략을 명시해 주시고, Video도 다른 것들과 동일하게 @DiscriminatorValue을 사용하시면 됩니다. video가 상속구조를 갖기 때문에 item과 같이 별도의 상속구조를 위한 매핑 전략을 명시하지 않아도 됩니다.
위 객체 다이어그램을 JPA로 구현할 때 어떻게 매핑해야 하는지 입니다.
예를 들어서 그림에서 중간에 있는 video가 없으면 상속 전략을 SingleTable, JoinedTable, TablePerClass 중 어떤 전략이든지 무방하지만 video에 어떤 애너테이션을 매핑해줘야 하는걸까요?