Встречается на собеседованиях • сегодня
Как реализовать Pessimistic Locking
Pessimistic Locking блокирует данные на уровне БД, предотвращая их изменение другими транзакциями. В JPA реализуется через LockModeType:
java
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
// Блокируем запись для обновления
Product product = em.find(Product.class, 1L, LockModeType.PESSIMISTIC_WRITE);
// Изменяем данные
product.setStock(product.getStock() - 1);
em.getTransaction().commit();
em.close();
text
Ключевые моменты:
- `PESSIMISTIC_READ` - shared lock (другие могут читать, но не изменять)
- `PESSIMISTIC_WRITE` - exclusive lock (блокирует и чтение, и запись)
- В Spring Data JPA можно использовать `@Lock` в репозиториях
- Важно закрывать транзакции, иначе блокировка останется
- Может привести к deadlock'ам при неправильном использовании
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы