Назад к вопросам
Aston
Junior — Middle
129
Каким образом реализовать механизмы блокировки данных при работе с Spring Data?
Компании, где спрашивали
Ответ от нейросети
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);
}
Таким образом, выбор механизма зависит от требований к конкурентному доступу и производительности.