2009-03-24 15 views
43

나는 어떤 예제도 실제로 보지 못했지만 데이터베이스 내의 포함 된 엔티티 테이블 내에 저장된다고 가정합니다.값 개체는 데이터베이스에 어떻게 저장됩니까?

e. Person 엔티티/집계 루트와 해당하는 Person 테이블이있는 경우 Address라는 값 개체가 있으면 Address 값이이 Person 테이블에 저장됩니다!

주소가있는 회사 등의 다른 법인이있는 도메인에는 의미가 있습니까?

(나는 현재 프로젝트 관리 응용 프로그램을 작성하고 DDD로 얻으려고)

답변

84

그것은 당신이 설명한 바로 그 이유 때문에, 별도의 테이블에 값 개체를 저장하는 데 괜찮습니다. 그러나 엔티티 대 VO를 오해하고 있다고 생각합니다. 이는 지속성 관련 문제가 아닙니다.

다음은 예입니다 :

회사사람 모두 동일한 메일 주소 있다고 가정. 다음 중 유효한 문항은 무엇입니까?

  1. "나는 Company.Address을 수정하는 경우, 그것은 있는 Person.Address에 영향을주지해야한다"
"나는 Company.Address을 수정하는 경우, 나는 있는 Person.Address가 자동으로 변경 사항을 싶어" 1이 참

경우, 주소법인 수 있으며, 따라서 (을)를의 가지고해야 WN 표

, 2가 true의 경우 주소값 개체해야한다. 그것은 부모 Entity의 테이블 내에 컴포넌트로 저장 될 수도 있고, 자신의 테이블을 가질 수도 있습니다 (더 나은 데이터베이스 정규화).

주소가 지속되는 방식은 Entity/VO 의미와 아무 관련이 없습니다.

7

대부분의 개발자는 먼저 데이터베이스에서 먼저 생각하는 경향이 있습니다. DDD는 지속성이 처리되는 방법을 알지 못합니다. 그것은 그 문제를 다루는 저장소에 달려 있습니다. XML, SQL, 텍스트 파일 등으로 유지할 수 있습니다. Entities/Aggregates/Value Object는 도메인과 관련된 개념입니다.

비제이 파텔의 설명이 완벽합니다.

2

나는 에릭 에반스 (Eric Evans) 책과 우수한 dddsample Cargo 프로젝트를 예로 들어 DDD를 배우기 시작했습니다. 도메인 모델 계층에서이 뉘앙스의 코드 구현의 차이를 실현하고자하는 사람 (나 같은) 사람들을위한 그래서

http://dddsample.sourceforge.net/, 나는 말할 것입니다 :

overidded 메서드 Equals 및/또는 sameIdentityAs/SameValueAs (인터페이스 Entity와 ValueObject로부터)는 그들의 표현의 장소라고 생각합니다.

그냥 내 느낌 ':

내가 재미있는 생각도이 읽을 수 있어요 :

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

관련 문제