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

Как избежать одновременную перезапись результата предыдущего изменения с помощью Hibernate

Используйте оптимистичную блокировку (optimistic locking) через аннотацию @Version. Hibernate автоматически проверяет версию сущности перед обновлением и выбрасывает OptimisticLockException, если версия изменилась.

java
@Entity
public class Product {
    @Id
    private Long id;
    
    @Version
    private int version;
    
    // другие поля
}

Альтернатива - пессимистичная блокировка (pessimistic locking), которая блокирует запись на уровне БД:

java
Product product = session.find(Product.class, 1L, 
    LockModeType.PESSIMISTIC_WRITE);

Оптимистичная блокировка лучше для read-heavy приложений, пессимистичная - для write-heavy.

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

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

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

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