developer tip

값 개체는 데이터베이스에 어떻게 저장됩니까?

copycodes 2021. 1. 6. 08:30
반응형

값 개체는 데이터베이스에 어떻게 저장됩니까?


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

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

주소가있는 회사 등의 다른 엔터티가있는 도메인에 적합합니까?

(현재 프로젝트 관리 응용 프로그램을 작성 중이며 DDD에 들어 가려고합니다)


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

예를 들면 다음과 같습니다.

CompanyPerson 이 동일한 메일 주소를 가지고 있다고 가정합니다 . 다음 중 타당하다고 생각하는 것은 무엇입니까?

  1. "Company.Address를 수정하면 Person.Address가 해당 변경 사항을 자동으로 가져 오도록합니다."
  2. "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

반응형