사용자는 사용자 유형을 가지며 이러한 사용자 유형은 자체 속성 및 사용자 테이블을 참조하는 일부 ID를 사용하여 데이터베이스에 저장됩니다.DDD : 사용자 유형을 값 객체 또는 엔터티 여야합니까?
case class User(id: Int, userType: Int, firstName: String, lastName: String)
case class UserType(id: Int, name: String)
또한 집계 개체가 있습니다.
case class User(userData: User, userType: UserType)
응용 프로그램 관리자는 자신의 사용자 유형을 만들어 다른 응용 프로그램 사용자에게 할당 할 수 있습니다.
추가 정보 :이 사용자 유형은 작성된 후에는 수정할 수 없지만 일부 유효성 검사를 통과 한 후에는 삭제 될 수 있습니다.
id를 제외하고 동일한 값을 가진 두 개의 사용자 유형이 실제로 같은 객체이기 때문에 사용자 유형을 엔티티 (일부 ID로 저장해야하기 때문에) 또는 값 객체로해야합니까? UserType을 자체 저장소를 가질 필요가 있으므로
편집
응용 프로그램 관리자는 그 분명, 자신의 사용자 유형을 만들 수 있습니다. 사용자 저장소는 사용자 유형 자체 대신 사용자 유형에 대한 참조 만 가질 수 있지만 사용자 유형을 엔티티 또는 값 객체로 처리 할 수 있는지 여부는 문제입니다.
수정할 수없는 경우 왜 'id'가 있습니까? 그들의 이름은 그들의 이드가 될 수 없는가? 이 경우 그들은 가치임을 분명히 알 수 있습니다. 이 이름을 변경하고 모든 사용자에게 변경 사항을 반영하기를 원하면 'UserType'이 엔티티입니다. – plalx
ID가 ID 대신 PK라고 생각하면 오류가 발생합니다. id를 Whitout하고 PK로 이름을 사용하면, 사용자 유형이 값 객체라는 것을 이해합니다. 필자는이 ID를 PK로 사용했습니다. 주로 모든 테이블의 모든 PK를 숫자 형식으로 쓰는 경향이 있기 때문에이 문서 [link] (http://database-programmer.blogspot.com.es/2008/01/database)를 읽는 경향이 있습니다. -skills-sane-approach-to.html # rule1) 올바른 방법을 배웠습니다. – CapitanCachopo
지속성 관점에서 대리 신원을 갖는 것을 방지하지 못합니다. 이 경우 ID 모델이 인식하지 못하도록 IdentifiedValueObject 계층 상위 유형에서이 ID를 숨 깁니다. – plalx