Sobes.tech
Junior — Middle

Hibernate-də məlumatlara eyni vaxtda giriş zamanı münaqişələri qarşısını almaq üçün optimist kilidləmə mexanizmini necə həyata keçirmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Hibernate-də İyimser Kilidləmə @Version anotasyonu ilə həyata keçirilir. Bu anotasiya, varlığa (məsələn, version) xüsusi bir sahə əlavə edir və bu sahə hər qeyd yeniləndikdə avtomatik olaraq artır. Yadda saxlamada Hibernate, verilənlər bazasındakı versiya ilə yenilənən obyektin versiyasını yoxlayır. Əgər versiyalar uyğun gəlməzsə, bu başqa bir əməliyyat tərəfindən məlumatların dəyişdirildiyini göstərir və OptimisticLockException istisnası atılır.

Nümunə:

@Entity
public class Product {
    @Id
    private Long id;

    @Version
    private int version;

    private String name;
    private int quantity;

    // getter və setterlər
}

Bu şəkildə, eyni qeyd üzərində eyni vaxtda giriş edildikdə, bir istifadəçi məlumatları yeniləyərsə və başqa biri köhnə versiyanı saxlamağa çalışarsa, Hibernate münaqişəni aşkar edir və digər istifadəçinin dəyişikliklərini nəzərə almadan məlumatların üst-üstə yazılmasını qarşısını alır.