Como é um assunto que estou pesquisando ainda não tenho nenhum código para demonstrar, mas vou tentar exemplificar uma situação que me veio a cabeça aqui.
Primeira situação, duas pessoas pesquisam o mesmo cliente para alterar seus dados, como é um sistema JSF, será aberta uma página para alterar o que for necessário, depois de alguns minutos ambos clicam no botão alterar.
Nos meus testes, sem nenhum controle, aquele que clicou por ultimo vai ter suas modificações feitas e a do primeiro será descartada.
Se utilizar o lock otimista @Version do Hibernate/JPA, aquele que clicou por último recebe uma exception.
Mas ao meu ver isso é desagradável, fiquei pensando aqui, e se for algo grande, que os usuários levem muito tempo e no final acaba perdendo tudo, creio que o ideial seria algo como, quem clicou primeiro, consegue alterar, o segundo em diante, não conseguiria até o primeiro terminar