Problema com Sequence ao salvar objeto

Olá, estou usando o oracle 10g + hibernate.
Acontece que se eu cadastrar vários produtos meu id incrementa corretamente de 1 em 1, mas se eu fechar o sistema e depois de algumas horas abrir e for cadastrar mais produto ele pula vários números, por exemplo.

1º Tempo - Cadastrando
id 1 - id 2 - id 3 - id 4 - id 5
Fechei o sistema, espero algum tempo e abro novamente pra cadastrar
2º Tempo - Cadastrando
id 25 - id 26 - id 27 - id 28 - id 29 - id 30.
Mas aqui teria que continuar com id 6 - id 7 - id 8, …

O mesmo erro acontece se eu fizer na mão o código pra salva produto.

Isso não é erro.

Também uso o Oracle10g e usei antes o Oracle9i, ambos com sequence, e realmente acontece isso.

Mas não gera problema algum, pelo menos nunca gerou pra as aplicações que trabalhei.

Também nunca entendi muito bem o pq disso, vamos ver se alguém consegue ;D

Como você criou sua SEQUENCE?

Se você usar a opção NO_CACHE, isso dificilmente ocorre. Mas a geração dos ids será um pouco mais lenta.

[quote=ViniGodoy]Como você criou sua SEQUENCE?

Se você usar a opção NO_CACHE, isso dificilmente ocorre. Mas a geração dos ids será um pouco mais lenta.[/quote]

Então é isso ViniGodoy? Realmente eu não uso a opção NO_CACHE quando crio as sequencias.

Valeu pela dica.

Sim, o que ocorre é que o SEQUENCE tem um cache para agilizar criações de múltiplos objetos na mesma transação, ou no mesmo statement. Quando a transação é abortada, todos os valores do cache são perdidos.

Mas concordo com você, na prática, é bobagem se preocupar com isso. E se o programa depende de uma ordem bonitinha, você não deveria controlar isso por sequence. Deixe a chave primária ser algo 100% do controle do programador (ou do banco, no caso).

Se há outras regras de negócio associada a chave (como ser uma sequencia perfeita), ela deveria ser um campo normal, e uma chave candidata.

Obrigado ao ViniGodoy e ao romarcio pelas respostas.
Não que isso seje um problema nem preciso controlar a ordem das sequencias, apenas curiosidade.
Mas quando continuamos cadastrando tem a possibilidade de inserir nos intervalos que não foram inseridos ? Apenas curiosidade.