값 개체는 데이터베이스에 어떻게 저장됩니까?
실제로 어떤 예제도 보지 못했지만 데이터베이스 내의 포함 엔터티 테이블 내에 저장되어 있다고 가정합니다.
즉. Person 엔터티 / 집계 루트와 해당 Person 테이블이 있고 Address라는 값 개체가있는 경우 Address 값이이 Person 테이블에 저장됩니다!
주소가있는 회사 등의 다른 엔터티가있는 도메인에 적합합니까?
(현재 프로젝트 관리 응용 프로그램을 작성 중이며 DDD에 들어 가려고합니다)
설명하신 바로 그 이유 때문에 값 개체를 별도의 테이블에 저장하는 것이 좋습니다. 그러나 나는 당신이 엔티티 대 VO를 오해하고 있다고 생각합니다. 그것은 지속성 관련 문제가 아닙니다.
예를 들면 다음과 같습니다.
Company 와 Person 이 동일한 메일 주소를 가지고 있다고 가정합니다 . 다음 중 타당하다고 생각하는 것은 무엇입니까?
- "Company.Address를 수정하면 Person.Address가 해당 변경 사항을 자동으로 가져 오도록합니다."
- "Company.Address를 수정하면 Person.Address에 영향을주지 않아야합니다."
경우 1 사실, 주소 해야 엔티티 , 따라서 그것의 자신의 테이블이 있습니다
경우 2 사실, 주소 해야 값 개체 . 부모 엔티티의 테이블 내에 구성 요소로 저장되거나 자체 테이블을 가질 수 있습니다 (더 나은 데이터베이스 정규화).
보시다시피 주소가 지속되는 방식은 Entity / VO 의미 체계와 관련이 없습니다.
대부분의 개발자는 다른 무엇보다 먼저 데이터베이스에서 생각하는 경향이 있습니다. DDD는 지속성이 어떻게 처리되는지 알지 못합니다. 그것은 그것을 처리하는 저장소에 달려 있습니다. xml, sql, 텍스트 파일 등으로 유지할 수 있습니다. 엔티티 / 집계 / 값 개체는 도메인과 관련된 개념입니다.
Vijay Patel의 설명은 완벽합니다.
저는 Eric Evans 책과 훌륭한 dddsample Cargo 프로젝트를 예로 들어 DDD를 배우기 시작했습니다. http://dddsample.sourceforge.net/
그래서 (나와 같은) 도메인 모델 레이어에서이 뉘앙스의 코드 구현 차이를 구체화하려는 사람들을 위해 다음과 같이 말할 것입니다.
오버라이드 된 메서드 Equals 또는 / 및 sameIdentityAs / SameValueAs (인터페이스 Entity 및 ValueObject에서)는 식의 위치라고 생각합니다.
그냥 내 기분이야 :)
나는 이것도 읽는 것이 흥미 롭다고 생각한다.
http://martinfowler.com/bliki/ValueObject.html
참조 URL : https://stackoverflow.com/questions/679005/how-are-value-objects-stored-in-the-database
'developer tip' 카테고리의 다른 글
스택 맵 프레임이란? (0) | 2021.01.06 |
---|---|
Java 8 : 두 ZonedDateTime의 차이 계산 (0) | 2021.01.06 |
jQuery UI Datepicker에서 minDate를 현재 날짜로 설정하는 방법은 무엇입니까? (0) | 2021.01.05 |
R에서 중복 값 찾기 (0) | 2021.01.05 |
React.js의 부트 스트랩 모달 (0) | 2021.01.05 |