Pessoa Física x Pessoa Jurídica.... qual a melhor forma de modelar?
3 respostas
E
eltonmotta
Tenho em meu sistema uma situação onde tenho um comprador que pode ser tanto uma Pessoa Física (possui atributos específicos) como Pessoa Jurídica. O modelo abaixo mostra esse relacionamento.
Gostaria de saber de qual é a melhor forma de representar no meu modelo de classes e também como mapeá-lo corretamente no Hibernate.
Primeiro, vc nao precisa repetir o ID na P. Fisica e outro na P.Juridica. Como você está usando herança, use apenas o ID da classe Pessoa. Dentro da classe pessoa coloque todos os atributos que sejam compartilhados para as outras classes, como o ID, endereço, telefone, etc etc etc.
Ai depois, na classe compradores, vc relaciona ela com a classe Pessoa apenas, apenas com o ID da pessoa. Ficou claro?
No hibernate vc vai mapear os relacionamentos da forma que vc achar melhor, many-to-one, one-to-one e por ai vai
E
eltonmotta
Oi Jair,
Obrigado por sua resposta.
Pensei nessa solução de relacionar diretamente com pessoa também, mas existem dados específicos que utilizo. Ex: Se o comprador for PF, necessito da data do nascimento e do nome, se for PJ preciso da razãoSocial. Se o relacionamento for direto com Pessoa, não tenho esses dados.
Um Abraço,
Elton.
Jair_Rillo_Junior
eltonmotta:
Oi Jair,
Obrigado por sua resposta.
Pensei nessa solução de relacionar diretamente com pessoa também, mas existem dados específicos que utilizo. Ex: Se o comprador for PF, necessito da data do nascimento e do nome, se for PJ preciso da razãoSocial. Se o relacionamento for direto com Pessoa, não tenho esses dados.
Um Abraço,
Elton.
Quem disse que com o ID do pessoas vc nao consegue a razao social ou coisa do tipo?
A sua classe pessoa, seria algo mais ou menos assim
publicclassPessoasimplementsSerializable{privateIntegerid;privatePessoaJuridicapessoaJuridica;privatePessoaFisicapessoaFisica;// gets and setters}
Ai quando vc tiver o ID, vc pode instanciar a classe PessoaJuridca ou Fisica, algo assim
Pessoapessoa=//algum metodo que o Hibernate retorna o Objeto Pessoa com o ID que vc passou como parametroPessoaJuridicapessoaJuridca=pessoa.getPessoaJuridica();System.out.println(pessoaJuridica.razaoSocial());//aqui vc tem a razao social ;)