Na página 382 deste livro, há uma passagem falando sobre o uso de objetos de valor em agregados, sob a raiz (entidade). Há um exemplo Product
disso, além de outros valores, que contém uma Set<ProductBacklogItem>
coleção de entidades .
Agora, Vernon tenta explicar por que ProductBacklogItem
uma entidade e não um objeto de valor:
Existem boas razões pelas quais ProductBacklogItem é modelado como uma Entidade e não como um Valor. Conforme discutido em Value Objects (6), como o banco de dados de backup é usado via Hibernate, ele deve modelar coleções de valores como entidades do banco de dados. Reordenar qualquer um dos elementos pode fazer com que um número significativo, mesmo todos, das instâncias ProductBacklogItem sejam excluídos e substituídos. Isso tenderia a causar uma sobrecarga significativa na infraestrutura. Como uma entidade, ele permite que o atributo de pedido seja alterado em todo e qualquer elemento da coleção quantas vezes for necessário para o proprietário de um produto. No entanto, se deixarmos de usar o Hibernate com MySQL para um armazenamento de valores-chave, poderíamos facilmente mudar ProductBacklogItem para um tipo Value. Ao usar um valor-chave ou armazenamento de documentos,
Não entendo por que a implementação do Repositório determina se algum modelo será um Objeto de Entidade ou Valor. Se formos à loja de valores-chave, ainda podemos ter pedidos sobre os quais ele está falando.
Você acha que isso faz sentido?