Estou com uma dúvida básica de quando usar um List ou não para relacionamentos 1:N na modelagem da Classe.
Vejam:
1 cliente pode ter N pedidos… Mas não existe um List< Pedido > na classe cliente…
Mas 1 pedido por ter N items… nesse caso… Pedido tem um List< Item > …
Pq? Pq em um caso usa list e no outro não? Já que ambos representam um relacionamento 1:N
abraços!!!
Na minha opnião:
Exemplo #1:
class Cliente {
}
class Pedido {
Data data;
Cliente cliente;
}
Exemplo #2:
class Cliente {
List<Pedido>
}
class Pedido {
Data data;
}
Supondo numa situação em que é necessário buscar os pedidos de um certo cliente em um determinado periodo.
No #1 teriamos que buscar o cliente e os pedidos pelo id do cliente e o intervalo de datas. Tudo isso poderia ser feito usando o banco de dados.
No #2, ao buscar o cliente, virá junto todos os pedidos, então seria necessário filtrar por data a nível de aplicação (no sistema) e não diretamente do banco, isso deixaria o sistema mais lento.
Portanto nessa situação, usar o #1 é melhor.
Numa outra situação em que sempre é necessário todos os pedidos quando obter o cliente, o #2 é melhor.
Recomendo que passe a responsabilidade das buscas para o banco de dados, pois o banco já é otimizado para isso, o uso de listas pode forçar o sistema a fazer buscas, sobrecarregando o sistema.
Na imagem, quando solicitar um pedido, irá vir junto todos os itens, é provavelmente desejado que isso ocorra, portanto usa lista.
Entretanto quando buscar o cliente, não necessariamente vai precisar de todos os pedidos, mas somente alguns, os mais atuais ou aqueles que estão em aberto, portanto não usa lista.
Entendi…
Então o uso de List no pedido e não no Cliente é uma questão de projeto… não é necessário trazer a lista de pedidos do cliente toda hora q um cliente é utilizado… mas é necessariamente trazer a lista de itens do pedido quando este é utilizado…o que faz sentido…
Obrigado!