Boa noite pessoal,
Bem estou montando um diagrama de classe para um sistema e estou com uma duvida sobre como poderia montar o endereço… Bem vou tentar explicar melhor, o cliente e o fornecedor podem ter mais de um endereço, agora o vendedor possui apenas um endereço, eu estou procurando uma sugestao de como criar essas classes, pois eu poderia criar uma classe endereço e colocar uma lista(endereços) no cliente e no fornecedor, e no vendedor apenas um atributo simples, o problema que ai fico pensando como vou construir o DAO dessa classe, pois vendedor, cliente e fornecedor são entidades no banco de dados distintas, ou seja como vou mandar a chave do cliente, vendedor ou fornecedor para a tabela endereço… Bem ai não sei se coloco o endereço todo em cada classe(vendedor, cliente e fornecedor) o problema que acho que vai ficar “porco”, alguem tem alguma sugestão de como poderia fazer isso?
Agradeço a ajuda…
Abraços…
Normalmente:
class Cliente
{
List<Endereço> endereços;
}
Teria um modelo relacional assim:

Enquanto
class Vendedor
{
Endereço endereço;
}
Seria uma agregação:

mas também poderia usar o mesmo modelo do cliente acima.
Seria esta a tua dúvida?
O modelo do banco tinha pensado nesse estilo que você fez, acontece que estou com duvida no DAO, eu teria que ter uma classe ClienteEnderecoDAO para inserir nas tabela tab_cliente_endereco, VendedorEnderecoDao para inserir nas tabela tab_vendedor_endereco e FornecedorEnderecoDao e para inserir nas tabela tab_fornecedor_endereco? Também teria que ter uma para o proprio endereço então…
Valeu pela ajuda…
Bem, quanto a implementar isto, é da sua escolha, pode tanto fazer um DAO por tabela, ou um para várias tabelas, ou de preferência usar frameworks de ORM como JPA ou Hibernate para fazer tudo isso por você.
Bem eu vou usar o hibernate, eu tenho que mapear as classes nele, você acha que uso uma classe de endereço separada para cliente, fornecedor e vendedor?
Não, a menos os endereços de cada um tenham atributos diferentes.
Beleza, mas quem vai ser responsável por inserir nas tabelas filhas… ex: tab_cliente_endereco? Como vou controlar esses nomes diferentes no dao?
Blz cara vlw, vou dar uma olhada aki…
Obrigado pela ajuda…
Aviso:
Editei a mensagem anterior com o link da documentação de modelagem via anotações.