Entity EJB e o statement SQL "SELECT FOR UPDATE" são técnica...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a letra C, que se refere ao Bloqueio offline pessimista (Pessimistic Offline Lock). Este padrão de design é utilizado para garantir a integridade dos dados quando múltiplas transações ou sessões tentam modificar a mesma informação simultaneamente. O bloqueio offline pessimista assume que conflitos são comuns e, portanto, bloqueia o recurso para prevenir que outras operações o modifiquem até que o bloqueio seja liberado.
Compreender este padrão requer conhecimento sobre mecanismos de controle de concorrência em sistemas de gerenciamento de banco de dados (SGBDs). O statement SELECT FOR UPDATE bloqueia os registros específicos no banco de dados para que nenhuma outra transação possa modificar esses registros até que a transação atual seja concluída. Isso é característico do bloqueio pessimista, pois assume que as colisões são prováveis e, portanto, toma medidas proativas para evitar conflitos.
Os Entity EJBs (Enterprise JavaBeans) estão associados ao contexto de Java Enterprise Edition (Java EE) e é uma especificação para construir componentes de negócios escaláveis e transacionais. Eles também podem empregar mecanismos de bloqueio, como o bloqueio pessimista, para controlar o acesso concorrente aos dados.
Assim, a ligação entre o uso do Entity EJB e o comando SELECT FOR UPDATE está na implementação do bloqueio pessimista para garantir que as operações de banco de dados sejam realizadas de forma segura e consistente, prevenindo condições de corrida e possíveis inconsistências de dados.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Gabarito: C
SELECT FOR UPDATE é bloqueio pessimista de linhas, pois todas as linhas que estão sendo modificadas são bloqueadas pelo usuário e ninguém mais pode realizar alterações até que o bloqueio (lock) seja liberado.
OBS: Repare que isso não tem haver com Java e sim banco de dados. É um bloqueio pessimista por "travar" as linhas da tabela evitando seu acesso.
retirado diretamente do livro do Fowler:
"Pessimistic Offline Lock
by David Rice
Prevents conflicts between concurrent business transactions by allowing only one business transaction at a time to access data."
Há cinco formas modos de bloqueio JPA com LockModeType :
OPTIMISTIC
OPTIMISTIC_FORCE_INCREMENT
PESSIMISTIC_READ
PESSIMISTIC_WRITE
PESSIMISTIC_FORCE_INCREMENT
O código Java:
entityManager.find(Department.class, 1, LockModeType.PESSIMISTIC_WRITE);
Produz a seguitne tradução SQL:
SELECT ID, NAME, VERSION FROM DEPARTMENT WHERE ID = 1 FOR UPDATE;
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo