Встречается на собеседованиях • сегодня

Как реализовать 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'ам при неправильном использовании
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы