문제

나는 실제로 어떤 예제도 보지 못했지만 데이터베이스 내에 포함 된 엔티티 테이블 내부에 저장되었다고 가정합니다.

즉. 개인 엔티티/집계 루트와 해당 개인 테이블이있는 경우 주소라는 값 객체가있는 경우이 사람 테이블 내부에 주소 값이 저장됩니다!

주소가있는 회사 등과 같은 다른 기관이있는 도메인에 적합합니까?

(현재 프로젝트 관리 응용 프로그램을 작성하고 DDD에 들어가려고 노력하고 있습니다)

도움이 되었습니까?

해결책

당신이 설명한 이유 때문에 값 객체를 별도의 테이블에 저장해도됩니다. 그러나 나는 당신이 실체와 VOS를 오해하고 있다고 생각합니다. 그것은 지속성 관련 문제가 아닙니다.

예는 다음과 같습니다.

a 회사 그리고 사람 둘 다 같은 메일을 가지고 있습니다 주소. 이 진술 중 어느 것이 유효하다고 생각합니까?

  1. "회사를 수정하면 address를 수정하면 Person.address를 자동으로 변경하기를 원합니다."
  2. "내가 회사를 수정하면 address를 수정하면 사람에게 영향을 미치지 않아야합니다.

만약에 1 사실이다, 주소 an이어야합니다 실재, 따라서 자체 테이블이 있습니다

만약에 2 사실이다, 주소 a 가치 객체. 부모 엔티티 테이블 내에 구성 요소로 저장 될 수 있거나 자체 테이블 (더 나은 데이터베이스 정규화)을 가질 수 있습니다.

보시다시피, 주소가 지속되는 방법은 엔티티/VO 의미와 관련이 없습니다.

다른 팁

대부분의 개발자는 데이터베이스에서 먼저 생각하는 경향이 있습니다. DDD는 지속성이 어떻게 처리되는지 알지 못합니다. 그것은 그것을 다루기위한 저장소에 달려 있습니다. XML, SQL, 텍스트 파일 등으로 유지할 수 있습니다. 엔티티/집계/값 개체는 도메인과 관련된 개념입니다.

Vijay Patel의 설명은 완벽합니다.

Eric Evans Book과 훌륭한 DDDSALME Cargo Project와 함께 DDD를 배우기 시작했습니다. http://dddsample.sourceforge.net/

따라서 도메인 모델 레이어 에서이 뉘앙스의 코드 구현의 차이를 실현하려는 사람들 (나와 같은)에게는 다음과 같이 말합니다.

오버 시드 메소드는 / 및 sameidentityas / samevalueas (인터페이스 엔티티 및 ValueObject)와 같다. 나는 그들의 표현의 장소라고 생각한다.

그것은 단지 나의 느낌입니다. :)

나는 이것을 읽는 것도 흥미 롭다고 생각합니다.

http://martinfowler.com/bliki/valueobject.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top