Sobes.tech
Назад к вопросам
Junior — Middle
129

Каким образом реализовать механизмы блокировки данных при работе с Spring Data?

Компании, где спрашивали
AstonAston

Ответ от нейросети

sobes.tech AI

В Spring Data для реализации блокировок данных используются механизмы оптимистической и пессимистической блокировок.

  • Оптимистическая блокировка основана на версии записи. В сущности добавляется поле, например @Version, которое автоматически увеличивается при обновлении. Если при сохранении версия изменилась, выбрасывается исключение.
@Entity
public class Product {
    @Id
    private Long id;

    @Version
    private Integer version;

    // другие поля
}
  • Пессимистическая блокировка блокирует запись в базе на время транзакции. В Spring Data можно использовать аннотации @Lock с типами PESSIMISTIC_READ или PESSIMISTIC_WRITE в репозитории:
public interface ProductRepository extends JpaRepository<Product, Long> {
    @Lock(LockModeType.PESSIMISTIC_WRITE)
    @Query("select p from Product p where p.id = :id")
    Optional<Product> findByIdForUpdate(@Param("id") Long id);
}

Таким образом, выбор механизма зависит от требований к конкурентному доступу и производительности.