Pergunta

Eu realmente não tenho conhecimento de exemplos, mas presumo que eles são salvos dentro da tabela de entidade que contém dentro do banco de dados.

Ie. Se eu tiver uma entidade Pessoa / root agregado e uma mesa de pessoa que corresponde, se tivesse um valor do objeto chamado de endereços, valores de Endereço seria salvo dentro desta tabela Pessoa!

Isso faz sentido para um domínio onde tenho outras entidades, como empresas, etc., que têm um endereço?

(Atualmente estou escrevendo um aplicativo de gerenciamento de projetos e tentando entrar em DDD)

Foi útil?

Solução

É ok para guardar objetos de valor em uma tabela separada, para as mesmas razões que você descreveu. No entanto, eu acho que você está mal-entendido Entidades vs VOs - não é uma preocupação relacionada com a persistência

.

Aqui está um exemplo:

Suponha que um Empresa e Person ambos têm o mesmo e-mail Endereço . Qual destas afirmações não considero válido?

  1. "Se eu modificar Company.Address, eu quero Person.Address para obter automaticamente essas mudanças "
  2. "Se eu modificar Company.Address, ele não deve afectar Person.Address "

Se 1 é verdade, Endereço deve ser um Entidade , e, portanto, tem a sua própria mesa

Se 2 é verdade, Endereço deve ser um Valor objeto . Pode ser armazenado como um componente dentro da tabela da Entidade o pai, ou ele pode ter a sua própria tabela (melhor normalização de dados).

Como você pode ver, como endereço é mantido nada tem a ver com a semântica Entidade / VO.

Outras dicas

A maioria dos desenvolvedores tendem a pensar no banco de dados antes de qualquer outra coisa. faz DDD não saber sobre como a persistência é tratado. Isso é com o repositório para lidar com isso. Você pode persistir lo como um xml, sql, arquivo de texto, etc etc. Entidades / agregados / objetos de valor são conceitos relacionados ao domínio.

Explicação por Vijay Patel é perfeito.

Eu comecei a aprender DDD com Eric Evans livro e do excelente projeto Carga dddsample como exemplo. http://dddsample.sourceforge.net/

Portanto, para aqueles (como eu) que quer materializar a diferença na implementação código desse nuance na camada de modelo de domínio, eu diria:

O método overidded Igual ou / e sameIdentityAs / SameValueAs (a partir da interface Entity e ValueObject) são, penso eu, o lugar de sua expressão.

É apenas o meu sentimento:)

Eu acho interessante ler este demasiado:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top