List? Sim e não!

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!