Associações de Objetos

Pessoal,
tenho uma classe NotaFiscal que tem diversas associações com outras classes, ItemProdutos, Fornecedor, Vendedor, e por aí vai.

Estou com a seguinte dúvida: quando mando buscar uma notaFiscal no banco, e mando retornar ela na forma de um objeto (do tipo NotaFiscal), tenho que “preencher” todas os objetos que estão associados??

se fizer com JDBC precisa sim, mas alguns frameworks fazem isto automaticamente.

Depende da informacao que voce quer usar. Se quiser ter toda a informacao da nota fiscal, entao teria que preencher o resto dos dados… Por exemplo, para imprimir a nota fiscal voce precsia de todos os dados, mas para saber o numero dela, voce nao precisa preencher os objetos por completo… vai depender do que voce pretende fazer.

Os dados voce pode trazer em uma unica instrucao sql ( se o design do banco permitir ), ou fazer tantas consultas quanto forem necessarias para pegar os dados.

Rafael

bem lembrado :slight_smile:

Pensei q seria melhor sempre prencher todos os objetos relacionados. Mas meus objetos poderiam ter outras associações… ficaria muito demorado.
No caso de preencher apenas os dados necessários, então pode se admitir que um método pode retornar null qdo eu não ter preenchido o valor devido no objeto??

Por exemplo, se obti um objeto Produto apartir do objeto NotaFiscal, nem todos os métodos deste objeto produto irão me retorna algo.

Entao, depende de como vc fez… Uma maneira eh ter apenas os ids dos produtos, e entao ir pegando os dados deles conforme for necessario, ou entao preencher tudo mesmo ( sim, precisaria buscar todos os dados )…

Voce necessariamente vai precisar buscar a informacao caso deseje fazer algo com ela, nao importando se ira pegar tudo de uma vez soh ou aos poucos… Veja o que se encaixa melhor no teu sistema/nas tuas necessidades.

Rafael

então, qqer uma dessas opções:

  • preencher todos os objetos, e suas informações (neste caso, haveria uma classe NotaFiscal. Esta classe possui outros objetos: vector de objetos Produtos, um objeto Fornecedor…)

- preencher somente ids(neste caso, haveria uma classe NotaFiscal. Esta classe possui apenbas ids : arrays de int com código de cada produto, um int com código Fornecedor…) <-- Foi isso mesmo q vc quis dizer ?? Mas desta forma, não estou usando OO, estou ??

pode ser admitida como um bom design?

Entao, depende

No final das contas o que voce eh dos dados mesmo, ou seja, dos objetos… se voce encher de id, de uma forma ou de outra tera que ir atras da informacao.

Voce tem que ter composicao/agregacao, ou seja, o teu objeto NotaFiscal tem uma lista de objetos Produtos, que por sua vez tem objetos Fornecedor, tem o objeto da Transportadora etc etc… Isso tudo faz parte da nota fiscal.

Para deixar com uma performance melhor, seria legal voce tem “cache” dos dados, ou fazer lazy-loading ( vai preenchendo os objetos conforme o necessario )…

Rafael