Pessoa Física x Pessoa Jurídica.... qual a melhor forma de modelar?

3 respostas
E

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.

Obrigado.

3 Respostas

Jair_Rillo_Junior

Ola Elton

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

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

public class Pessoas implements Serializable {
  private Integer id;
  private PessoaJuridica pessoaJuridica;
  private PessoaFisica pessoaFisica;
  // gets and setters
}

Ai quando vc tiver o ID, vc pode instanciar a classe PessoaJuridca ou Fisica, algo assim

Pessoa pessoa = //algum metodo que o Hibernate retorna o Objeto Pessoa com o ID que vc passou como parametro

PessoaJuridica pessoaJuridca = pessoa.getPessoaJuridica();
System.out.println(pessoaJuridica.razaoSocial()); //aqui vc tem a razao social ;)
Criado 20 de outubro de 2006
Ultima resposta 20 de out. de 2006
Respostas 3
Participantes 2