작성
·
189
0
https://www.inflearn.com/questions/66107 글에 답변주신 내용중에 질문있습니다.
"오히려 주문, 배송 등등 객체 각각이 살아있어서 필요한 곳을 참조하는 식으로 설계하는게 더 좋은 설계 방법" 말씀하신 내용중에 '필요한 곳을 참조하는 식' 이 부분 설명이 이해가가지 않습니다.
혹시, Member-Order 간의 연관관계에서 Member엔티티 클래스안에 @OneToMany List<Order>일대다 연관관계를 c끊어내므로서 Member로 Order엔티티객체에 접근할 수 없게만들고
직접 em.find 나 em.createQuery 로 Order엔티티객체를 얻어내라는 말씀이신가요?
답변 1
1
안녕하세요. ddoddo님, 공식 서포터즈 David입니다.
.
먼저, 표현이 조금 이상할 순 있지만 죽어있는 객체에 대해 말씀드리겠습니다.
특정 회원과 관련된 배송, 주문 등의 정보를 찾으려면 무조건 "회원" 객체를 거쳐야 할 때 죽어있는 객체가 됩니다.
내가 찾고자 하는 것의 핵심은 "배송", "주문"입니다. 다만, 그것들을 찾는 조건이 특정 회원일 뿐입니다.
주객이 전도되어 배송을 찾고 싶은데 회원을 거쳐야만 찾을 수 있는 것입니다.
객체 각각이 살아있다는 것은 배송을 찾아내기 위해 회원에 접근하는 것이 아니라, 주문을 찾아내기 위해 주문에 접근하는 것입니다.
주문 객체는 주문의 주체(Orderer)에 대한 정보를 가지고 있을 것입니다.
만약 이렇게 설계되어 있다면 특정 회원이 주문한 주문 건들을 찾기 위해 회원을 거치지 않고 바로 주문에서 찾을 수 있을 것입니다.
이런 맥락에서 "오히려 주문, 배송 등등 객체 각각이 살아있어서 필요한 곳을 참조하는 식으로 설계하는게 더 좋은 설계 방법" 이라고 말씀하신 것 같습니다.
.
감사합니다.
책 p.327과 임베디드 값타입 강의에서도 표현방법에 관해 말씀을 하셨는데 제가 잊고있었습니다.
엔티티 특성: 공유가능함, 참조한다고 표현
값타입 : 공유불가능함, 포함한다고 표현
따라서 '필요한 곳을 참조하는 식' 이라는 의미는 주문, 배송 엔티티를 직접 사용한다는 의미로 말씀하신것으로 이해됐습니다.
감사합니다.