Duvida sobre gravar id

2 respostas
javamysql
U

Oi, qual a melhorar forma para resolver este problema, tenho um sistema em java desktop que possivelmente dois computadores iram utilizar, porem num crud é necessário mostrar o id atual mais um, ou seja ele tem que ter a noção do ultimo id mais um.

Porem se os dois estiver cadastrando informações ao mesmo tempo vai dar conflito neste id, aparecendo o ultimo id mais um que seria o novo id que seria gravado no banco, como posso resolver isto???

2 Respostas

aix

Ola @upwardc,

você pode usar um lock otimista(Optimistic Locking), para isto você cria uma versão do objeto que você manda para a view, e quando for salvar este objeto vai verificar se a versão é a última versão, exemplo : o computador 1 abre a tela que tem o objeto versionado(versão1) e começa a editar o registro, mas ainda não salvou(não submeteu os dados), agora o computador 2 abre a mesma tela e recebe a versão 1 do objeto e começa a editar o registro, neste meio tempo, o computador 1 salva os dados e atualiza a versão do objeto para(versão2) e o computador 2 ficou com a versão velha do objeto(versão 1), quando o computador2 tentar salvar esse registro que não é mais válido ocorrera um org.hibernate.OptimisticLockException, neste ponto você pode dar ao cliente uma opção mostrar as 2 views em um tipo de diff para ele ver o que foi alterado na base, ou então avisar ele que o registro que ele esta editando sofreu alterações, com as configurações existentes da para fazer bastante coisa para o controle de acesso simultâneo, o bom é dar uma lida nas docs, pois tudo depende do que você realmente precisa, espero ter ajudado, abraços.

segue alguns links…

Locking Optimistic com @version

Hibernate locking patterns how does optimistic lock mode work

U

Ola eu entendi a sua resposta, porem eu nao estou usando hibernate, obrigado pela informações, creio que vou precisar sobre essa questão do hibernate pois vou iniciar um projeto web.

Obrigado

Criado 22 de agosto de 2016
Ultima resposta 22 de ago. de 2016
Respostas 2
Participantes 2