Salve !
Estou travado em uma regra aqui.
Tenho lá: Pedido, cliente e endereço. Esse último é agregado de cliente.
Quando cria-se um pedido, os dados sobre o endereço precisa ser mantido, pois o cara pode mudá-lo, removê-lo e etc…
Aí vem o problema: Hoje para carregar os endereços de um cliente XPTO eu uso o lazy loading. Algo como:
Cliente.getEnderecos() {
// acessa o repositório do cliente, busca os endereços agregados e retorna
}
Só, que depois de consumado o pedido, ele precisará buscar o Endereço em outra “tabela”. Isso é tranquilo, poderia ser baseado em status e tal., mas neste caso eu não tenho (ao meu ver) algo para diferenciar o “pega os endereços atuais” do “pega o endereço desse pedido”.
Pensei no seguinte: Cliente.getEnderecoDo(int pedido_id)
Mas acho que isso deixaria meu Cliente “sabendo demais”, ou não ?
— Editado —
Pensando com meus botões aqui, me veio a mente que eu poderia talvez no Pedido.getCliente() pedir ao Repositório do Cliente trazer já o endereço e injetar no cliente. Algo como:
Pedido.getCliente() {
this.cliente = RepositorioCliente.pequisaPorId(cliente_id).get();
this.cliente.adicionaEndereco(RepositorioCliente.buscaEnderecoDo(pedido_id));
return this.cliente;
}
De primeiro momento isso parece fazer sentido. Pelo menos para mim…
Alguma sugestão ?
