Curiosidade sobre a geracao de codigos do Hibernate (PKs)

2 respostas
K

Pessoal, talvez a explicação seja bem óbvia. Mas por que a geração de PKs do Hibernate parecem ter uma sequencia tão estranha? Isso que irei descrever, acontece tanto usando GenerationType.AUTO qto TABLE.

Em uma sessão, começo a incluir registros, e as PKs seguem em 1, 2, 3…
Depois, de encerrada a sessao e iniciada uma nova, a sequencia segue para 32768, 32769, e depois já vai pra 64mil e tanto…

Por que isso é assim?

Ps. nao fico abrindo e fechando sessões, isso acontece pq fecho e depois abro a aplicação novamente.

2 Respostas

gilliard_santos

Pelo que eu sei, o hibernate (na configuracao default) cria uma sequencia só para a aplicacao inteira, dessa forma se vc salva um objeto em uma tabela, outro em outra e assim sucessivamente, a contagem vai aumentando.
Se voce salvar um objeto na table A, mil na tabela B, e depois mais um na tabela A, o segundo registro da tabela A vai ter a PK = 1002.
Agora sinceramente nao sei se é o teu caso, pois os números estão saltando muito. Entao se em casa execucao da tua aplicacao voce salva 30mil registros… a resposta pode ser essa :slight_smile:

K

Definitivamente não é esse o problema. Não são salvos 32mil registros entre cada operação.

E quanto a sequencia, estou usando TABLE. Dessa forma, cada tabela (cada PK, melhor dizendo…) tem uma sequencia. Diferentemente de AUTO, que tem o funcionamento que você citou. :slight_smile:

Criado 26 de janeiro de 2007
Ultima resposta 26 de jan. de 2007
Respostas 2
Participantes 2