Vamos supor que exista um esquema de banco de dados definido assim:
Person.mail_address_key ----- Address.address_key
Person.billing_address_key ----- Address.address_key
A Person
tem um endereço para correspondência e um endereço para cobrança. Como uma técnica de desnormalização, criamos uma Address
tabela separada . Na maioria das vezes, o mail_address_key
e o billing_address_key
de um único Person
terão o mesmo valor (ou seja: a chave do endereço de correspondência e cobrança será a mesma).
Na minha banco de dados do Address
tem uma identidade (a chave de endereço). Mas, no meu modelo de domínio , não vejo uma razão convincente para Address
que seja uma Entidade, gostaria que fosse um Objeto de Valor.
- No DDD, isso é uma opção? Ou os objetos de valor geralmente são um grupo de colunas (em oposição a uma tabela)? Estou meio que defendendo o advogado do diabo aqui, porque acho que o banco de dados não deve ditar a estrutura do modelo de domínio, mas apenas assegurando.
- Em caso afirmativo, onde / quando / como o endereço perde sua identidade do banco de dados para que possa ser usado como um Objeto de Valor na Camada de Domínio? Ou, devo manter o identificador do banco de dados no objeto de valor?
- Quando o modelo precisa ser persistido no banco de dados, qual é o processo? Devo passar por um processo de a) Encontre um endereço por esses campos, b) se ele não existir, crie um novo c) se houver, atualize os campos?