작성
·
375
9
안녕하십니까 강사님! 활용1편을 정독하고 jpa기본을 다지기위해 공부중인 학생입니다! 항상 좋은강의 해주셔서 정말 감사합니다 강사님 덕분에 공부하는게 즐겁습니다ㅎㅎ
임베디드 타입과 @MappedSuperclass중에 뭘써야할지 저도 궁금했었는데 다른분이 똑같은 질문을 올려서 그걸 보고 다른 궁금한점들이 있어서 여쭤보려합니다.
1. @MappedSuperclass는 공통적으로 많은 클래스에 공통항목을 적용할때 써야하고 임베디드 타입은 타입별로 사용될 메서드들이 나뉘어져야 할때 사용하면 되는건가요?!
어느 경우에 어떤걸 쓸지 머리속에 딱 정리가 되었으면 하는데 두 경우가 많이 헷갈리는것 같습니다ㅜ
2. 또한 자바에서는 다중 상속이 안되는데 MappedSuperclass로 상속을 써버리는게 괜찮은건지 궁금합니다!
3. 활용1편에서 Address 설계를 임베디드로 하셨는데 MappedSuperclass를 안쓰신 이유가 궁금합니다!
4. 다른 답변의 댓글에서 결국에는 임베디드와 @MappedSuperclass는 상속과 위임의 차이밖에 없다고 하셨습니다! 그리고 JPQL 쿼리 때문에 상속을 선택하신다고 하셨는데 그러면 앞으로 메서드가 타입별로 나뉘어져야 할때 빼고 다 @MappedSuperclass만 써도 되는건지 궁급합니다!
막 궁금한걸 치다보니까 질문이 4개나 되었습니다ㅜ 혹시 질문이 많아서 답변하기에 불편하시다면 죄송합니다..
답변 2
12
안녕하세요. BeomJun Lee님^^
결론부터 이야기하면 상속보다는 위임입니다!
(다중상속도 안되고, 객체지향 설계상 유연성이 떨어지지요.)
그래서 가급적이면 MappedSuperclass는 보다는 임베디드를 사용하는 것이 좋습니다. -> 그러면 1,2,3번이 다 해결되시지요^^?
그런데 MappedSuperclass가 쓸만한 경우가 딱 하나 있습니다. 바로 대부분의 엔티티들이 공통으로 사용하는 속성들을 다룰 때 입니다. 대표적으로 등록시간, 수정시간, 등록자, 수정자는 대부분의 엔티티에 공통으로 사용하는 속성입니다. 다음 글을 참고해주세요^^
https://www.inflearn.com/questions/18578
도움이 되셨길 바래요^^ 혹시 또 궁금한 내용이 있으면 언제든지 편하게 질문주세요
1