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

Как решить проблему обновления сущности в двух конкурентных транзакциях

Для решения проблемы конкурентных обновлений в JPA/Hibernate можно использовать:

  1. Оптимистичную блокировку (Optimistic Locking) через @Version:
java
@Entity
public class Product {
    @Id
    private Long id;
    @Version
    private Long version;
    // другие поля
}

При конфликте выбрасывается OptimisticLockException.

  1. Пессимистичную блокировку (Pessimistic Locking):
java
entityManager.find(Product.class, id, 
    LockModeType.PESSIMISTIC_WRITE);

Блокирует запись на уровне БД.

  1. Повторные попытки (Retry механизм) для обработки конфликтов.

Оптимистичная блокировка лучше для read-heavy приложений, пессимистичная - для write-heavy. Также важно проектировать бизнес-логику так, чтобы минимизировать конфликты (например, уменьшая размер транзакций).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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