Junior — Middle
Como é que os modos de bloqueio otimista e pessimista diferem no Hibernate e quais são as suas características?
sobes.tech IA
Resposta da IA
No Hibernate, existem dois modos principais de bloqueio para gerenciar o acesso concorrente aos dados: bloqueio otimista e bloqueio pessimista.
Bloqueio otimista (Optimistic Locking):
- Assume que conflitos no acesso simultâneo aos dados são raros.
- Não bloqueia os dados ao lê-los.
- Ao atualizar, verifica-se a versão do objeto (por exemplo, o campo de versão). Se a versão mudou desde a leitura, a operação é revertida com um erro.
- Adequado para sistemas com baixa concorrência.
Bloqueio pessimista (Pessimistic Locking):
- Assume que conflitos são prováveis.
- Ao ler ou atualizar dados, uma trava é aplicada ao nível do banco de dados (por exemplo, SELECT FOR UPDATE).
- Outras transações não podem modificar ou ler os dados bloqueados até que a trava seja liberada.
- Usado em sistemas com alta concorrência.
Características:
- O bloqueio otimista é mais eficiente em baixa concorrência, mas requer tratamento de erros de conflito.
- O bloqueio pessimista reduz o paralelismo, mas previne conflitos antecipadamente.