여기 약간의 문제가 있습니다
값 객체가있는 엔터티가 있어야합니다. 문제가 아니다. 새 값에 대한 값 객체를 교체 한 다음 nhibernate는 새 값을 삽입하고 이전 값을 고아로 만든 다음 삭제합니다. 좋아, 문제 야
내 도메인의 내 엔터티는 보험입니다. 그는 주소 (값 개체) 모음을 가지고 있습니다. 주소 중 하나는 MailingAddress입니다. 우리가 우편 주소를 업데이트하고 싶을 때, 우편 번호가 잘못되었다고 가정 해 봅시다. Evans 교리에 따르면, 이전 객체는 불변이기 때문에 새로운 것으로 교체해야합니다 (가치 객체 권리?).
그러나 해당 주소의 PK는 MailingHistory 테이블의 FK이므로 행을 삭제하고 싶지 않습니다. 에반스 교리에 따르면, 우리는 여기에 거의 망쳐 져 있습니다. 주소 엔터티를 만들지 않으면 "바꾸기"할 필요가없고 이전의 좋은 날과 같이 단순히 우편 번호 멤버를 업데이트 할 필요가 없습니다.
이 경우에 무엇을 제안 하시겠습니까? 내가 보는 방식으로 ValueObjects는 데이터베이스 테이블 열 그룹 (nhibernate의 구성 요소)을 캡슐화하려는 경우에만 유용합니다. 데이터베이스에 지속성 ID가있는 모든 항목을 엔티티 (집계 루트 일 필요는 없음)로 만드는 것이 더 좋으므로 전체 오브젝트 그래프를 다시 작성하지 않고 멤버를 업데이트 할 수 있습니다.
동의합니까? Evans가 변경 가능한 값 객체를 가질 수 있습니까? 또는 변경 가능한 값 객체가 엔티티의 후보입니까?
감사