Pessoal estou com uma dúvida:
Tenho as seguites Tabelas:
Empresa (id,empresa_id,razao_social,nome_fantasia,cnpj,ie,im,matriz_filial)
Obs: temos um autorelacionamento matriz x filial por isso o motivo do "empresa_id".
Fornecedor (id,id_empresa,nome,cpf_cnpj,rg,orgao_rg,ie,im,desde,tipo_pessoa,excluido)
Cliente (id,id_empresa,nome,cpf_cnpj,rg,orgao_rg,ie,im,desde,tipo_pessoa,excluido)
Na regra de negocio o fornecedor pode ser tanto pessoa fisica quanto juridica, assim como o cliente também. Como vocês fariam o mapeamento objeto relacional usando hibernate com annotations para esse cenário. Alguem tem um exemplo?
eu pensei assim a principio:
public class Pessoa {
private Long id;
private String nome;
private tipo char;
}
public class PessoaFisica extends Pessoa {
private String cpf;
private String rg;
}
public class PessoaJuridica extends Pessoa {
private String cnpj;
private String ie;
private String razaoSocial;
}
public class Cliente {
private Double limite;
private Date desde;
private PessoaFisica pessoaFisica;
private PessoaJuridica pessoaJuridica;
public Cliente() {
this.pessoaFisica = new PessoaFisica();
this.pessoaJuridica = new PessoaJuridica();
}
public void setPessoaFisica(PessoaFisica pessoaFisisca) {
this.pessoaFisica = pessoaFisica;
}
public void setPessoaJuridica(PessoaJuridica pessoaJuridica) {
this.pessoaJuridica = pessoaJuridica;
}
}
A Classe fornecedor é identica a cliente..assume papel de fisica e juridica também.
agora vem a dúvida., como mapear a tabela cliente e fornecedor nesse caso? observe que o banco não está normalizado visando performance, se eu fosse normalizar daria certo.! mas preciso de performance. Me Ajudem dando exemplos, e observe que tenho o campo CPf e cnpj repetido no banco, volto a dizer visando performance.
obrigado!