Sobes.tech
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.