Suponha que você tenha um objeto Pessoa com um campo int version anotado com @Version…
Eu e você estamos trabalhando no nosso sistema, que é um cadastro de Pessoas…
Eu e você decidimos atualizar o cadastro de Fulano, então, eu e você pegamos nosso objeto Pessoa do banco de dados e começamos a mecher, só que, como sou mais rápido que você, atualizei primeiro e, neste momento, atualizei o version do objeto persistido…
Assim que você for atualizar, uma exceção será lançada, dizendo que “outra transação”(Eu!) atualizou o objeto ou seu objeto está fora de sincronia com o do banco de dados…
É um jeito mais fácil de fazer lock de dados, sacou?
Eu uso e curto muito… se você tiver uma estrutura bem feita não precisa nem utilizar EntityManager, eu particularmente não uso…
Suponha que você tenha um objeto Pessoa com um campo int version anotado com @Version…
Eu e você estamos trabalhando no nosso sistema, que é um cadastro de Pessoas…
Eu e você decidimos atualizar o cadastro de Fulano, então, eu e você pegamos nosso objeto Pessoa do banco de dados e começamos a mecher, só que, como sou mais rápido que você, atualizei primeiro e, neste momento, atualizei o version do objeto persistido…
Assim que você for atualizar, uma exceção será lançada, dizendo que “outra transação”(Eu!) atualizou o objeto ou seu objeto está fora de sincronia com o do banco de dados…
É um jeito mais fácil de fazer lock de dados, sacou?
Eu uso e curto muito… se você tiver uma estrutura bem feita não precisa nem utilizar EntityManager, eu particularmente não uso…[/quote]
Obrigado acho q entendi …
só nao entendi o q vc quis dizer aqui: se você tiver uma estrutura bem feita não precisa nem utilizar EntityManager, eu particularmente não uso
o que eu uso entao??? estou iniciando em JPA é um pouco complicado a modelagem / relacionamento.
Pessoal, eu entendo comportamento da Annotation @Version. Sei que ao disparar uma atualização no objeto o campo anotado será incrementado automaticamente. Porém estou enfrentando um problema. Quando uso o método merge esse incremento não funciona, e se incrementar manualmente antes do merge ele lancará uma OptimisticLockException (claro!)