Dúvida JDBC + Auto Increment

7 respostas
M

Boa tared a todos,

Estou com uma duvida relacionado ao Auto Increment.

Cenario:
1 - Aplicacao Vraptor2+Hibernate+Oracle
2 - As tabelas no banco de dados foram criadas sem Auto Increment no campo ID
3- O sistema funciona perfeitamente pois o Hibernate gerencia essa parte de insert no banco

Problema:
1- Estou criando uma outra aplicação para fazer inserts nesse banco de dados
2- A aplicacao que estou montando usa java desktop + jdbc
3- Como eu faço para inserir um registro no banco emulando um Auto Increment igual o hibernate?

Digo qual a melhor pratica, pensei em ficar fazendo selects do ultimo registro inserido e capturar e incrementar o campo id, mas isso eh muito sugeito a dead lock.

Obrigado.

7 Respostas

nel

Vai utilizar Oracle, no desktop também? Se sim, basta criar sua sequence que ela se responsabiliza por isso.
Se for MySQL, adiciona “auto increment” na sua PK e está resolvido.

Não precisa efetuar select e como citado por você, estar sujeito a dead lock.
Abraços.

kenneth

Fala brow,

Apos adicionar o auto-increment, voce poderia configurar teu Hibernate pra seguir a Sequence…
=]

M

Então,

O fato é que a aplicacao (Vraptor2+Hibernate+Oracle) esta em produção e não foi desenvolvida por mim, dessa forma, não sei oq poderia ocasionar caso eu adicionasse um auto-increment no campo ID do banco de dados.

Gostaria de saber se existe algum comando magico que eu coloco no jdbc para ele inserir sempre depois do ultimo registro?

Estava pensando em fazer um SQL de insert que possua um subselect que pegue o ultimo id inserido e increment, mas aida acho q isso pode ocasionar deadlock.

O banco eh o Oracle XE 10g
Se eu criar a sequence para o campo ID sera que não ocorreria algum conflito com o hibernate?

nel

Se a configuração do hibernate estiver correta não haverá problemas.

G

Faz um metodo que busca o lastcode do banco +) ai manda ele no insert +)

kenneth

Entao guialeixo
Eh que a aplicacao vai ter insercoes em 2 pontos (web e desktop, pelo que entendi)…

Ae (eh dificil, mas) pode acontecer algum problema com concorrencia…

Nao sou expert em hibernate, mas o amigo nel ali disse que basta
configurar o Hibernate que tudo funcionara.

Voce nao consegue montar um ambiente de testes?

nel

Um exemplo disso é que você pode utilizar o JPA e o Hibernate. Eu utilizo ambos e somente informo a minha classe Entity quem é minha chave primária e o nome de sua respectiva sequence no banco. Neste caso, você deixa a gerência da PK para o banco. Como o kenneth disse, pode haver inserções ao mesmo tempo entre outros erros, então, não recomendo este tipo de ação, efetuar uma Query afim de buscar o valor da PK atual.

Abraços.

Criado 1 de setembro de 2010
Ultima resposta 1 de set. de 2010
Respostas 7
Participantes 4