Perda de dados

Pessoal, desculpa se a questão for meio ridícula, mas acho que é tão ridícula que não achei nada sobre isso…

Seguinte… tenho q desenvolver uma aplicação web, onde a tendência é que vários usuários (não muitos, mas o suficiente para causar o que vou comentar) estejam conectados ao memo tempo, e trabalhando sobre os mesmos registros.

O problema é que vários usuários podem acessar um mesmo registro. Cada um faz suas alterações, e clica em salvar.

O que clicar primeiro grava o novo estado do registro, beleza… ai o que clicar depois, grava o estado que ele colocou, e é perdida a alteração feita pelo primeiro. Isso precisa e deve ter um meio de ser evitado correto? Como espero que a resposta seja sim, alguém poderia me dar uma dica de como faz para garantir isso? ou simplesmente ignora a possibilidade?

Obrigado pela ajuda que vai aparecer e de novo desculpa se a coisa ta, além de boba, mal explicada rs…

Um jeito de fazer é com controle de versão. Sua entidade terá que ter uma propriedade numérica ou de data.
Eis o cenário:
Dois usuários carregarem o mesmo registro com a versão 3.
O primeiro altera e persiste tornando-o em versão 4.
O segundo com sua instância ainda com a versão 3 tenta persistir mas é impedido pois sua versão é menor que a do banco.

Na prática isso é usado?

Toda vez que eu alterasse algum atributo no registro iria somar um na versão certo?

Caso o cara fosse impedido de salvar eu poderia mandar ele para uma página avisando que o que ele viu não era a ultima versao e por isso ele nao pode salvar… mas ai ele perde tudo que possivelmente tenha digitado? Nao eh meio ruim pro usuario isso? Em compensação se eu mostrar ja com os dados que ele digitou, ele nao vai ver como era a nova versao q colocaram neh…

Sim, é usado na prática.
Todos os problemas que voce citou são contornáveis, mas vai dar meia-noite, e aliás mesmo que não, como diria o shikamaru: mendokusei.

se vc utilizar o hibernate na sua camada de persistencia, pode facilmente implementar o lock otimista
dê uma olhada nesse artigo http://www.jspbrasil.com.br/mostrar/39

abraços!

Sim, estou utilizando hibernate… vou dar uma olhada no link que enviou e qualquer problema volto a ostar aqui.

Valew