Atualize uma entidade dentro de um @ agrega

Eu estava lendo uma pergunta semelhante no SO:Como atualizar uma entidade dentro do Aggregate, mas ainda não tenho certeza de como uma interface do usuário deve interagir com entidades dentro de um agregad

Digamos que eu tenho umUser, com um monte deAddresses. Usuário é a raiz agregada, enquanto Endereço existe apenas dentro da agregaçã

Em uma interface da Web, um usuário pode editar seus endereços. Basicamente, o que acontece é:

O usuário vê uma lista de endereços em sua interface da webEle clica em um endereço e é redirecionado para esta página:edit-address?user=1&address=2 Nesta página, ele obtém um formulário no qual pode modificar esse endereç

I decidimos ignorar a raiz agregada, isso seria simples:

Carregaríamos diretamente oAddress com o seuId Nós atualizá-lo e salvá-lo

Por que queremos fazer isso da maneira DDD, temos soluções diferentes:

Nós tamb peça ao usuário para obter este endereço por Id:

address = user.getAddress(id);
address.setPostCode("12345");
address.setCity("New York");
em.persist(user);

O problema dessa abordagem é que a raiz agregada ainda não tem muito mais controle sobre o que é feito com o endereço. Ele apenas retorna uma referência a ele, portanto não é muito diferente de ignorar o agregad

Ou nós diga ao agregado para atualizar um endereço existente:

user.updateAddress(id, "12345", "New York");
em.persist(user);

gora, o agregado tem controle sobre o que é feito com esse endereço e pode executar qualquer ação necessária com a atualização de um endereç

Or tratamos o endereço como umvalue object e não atualizamos nossaAddress, mas sim exclua e recrie:

user.removeAddress(id);
address = new Address();
address.setPostCode("12345");
address.setCity("New York");
user.addAddress(address);
em.persist(user);

Esta última solução parece elegante, mas significa que um Endereço não pode ser uma Entidade. Então, e se precisar serratado como uma entida, por exemplo, porque outro objeto de negócios no agregado tem uma referência a el

Tenho certeza de que estou perdendo alguma coisa aqui para entender corretamente o conceito agregado e como ele é usado em exemplos da vida real, por isso, não hesite em comenta

questionAnswers(1)

yourAnswerToTheQuestion