Dúvida para definir chave primária

5 respostas
K

Estou com uma dúvida:

public class Cliente
{
   
    private Integer id;
   
    private String nome;
    
    private String fone;
   
    private String cnpj;
.
.
.
//getters e setters
}

considerando o meu pojo:
Qual seria a melhor definicao para escolher qual atributo seria a minha chave primária
Id ou cnpj já que estou utilizando hibernate.
pois tanto o id quanto o cnpj pode identificar unificamente o cliente

5 Respostas

denislima

eu colocaria o id como chave primaria e o cnpj como unique…

mas nao tenho certeza se essa eh a abordagem mais correta…

vamos ver se alguem tem mais alguma opiniao…

ah uma observacao: o id tem que ser Long.

fallows

asandrob

Eu uso só o CNPJ, já que é único. Senão tu ficas com duas referencias únicas para um mesmo registro ID e CNPJ.

yoshikichi

Nesse ponto você tem esquecer java e pensar no banco.
Chave primaria como ai e auto incremento indexa melhor o banco.
Seu cpf irá ser char, vc consegue fazer uma busca binaria em um char?
Mas tb tem o lance do cpf ser unico o que faz dele uma chave, ai vc escolhe manter ele como uma chave candidata ou primaria.
falow…
eu escolheria o pk com auto incremento.

asandrob

Não necessariamente um char, pode ser long.

K

Eu estou usando banco oracle, deveria criar uma sequencia para cada pojo para fazer o incremento da pk ou usar a sequencia do hibernate_sequence

Criado 18 de fevereiro de 2011
Ultima resposta 18 de fev. de 2011
Respostas 5
Participantes 4