Встречается на собеседованиях • сегодня
Как решить проблему обновления сущности в двух конкурентных транзакциях
Для решения проблемы конкурентных обновлений в JPA/Hibernate можно использовать:
- Оптимистичную блокировку (Optimistic Locking) через
@Version:
java
@Entity
public class Product {
@Id
private Long id;
@Version
private Long version;
// другие поля
}При конфликте выбрасывается OptimisticLockException.
- Пессимистичную блокировку (Pessimistic Locking):
java
entityManager.find(Product.class, id,
LockModeType.PESSIMISTIC_WRITE);Блокирует запись на уровне БД.
- Повторные попытки (Retry механизм) для обработки конфликтов.
Оптимистичная блокировка лучше для read-heavy приложений, пессимистичная - для write-heavy. Также важно проектировать бизнес-логику так, чтобы минимизировать конфликты (например, уменьшая размер транзакций).

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы