Sobes.tech
Junior — Middle

Hibernate'da ma'lumotlarga bir vaqtning o'zida kirishda nizolarni oldini olish uchun optimistik bloklash mexanizmini qanday amalga oshirish mumkin?

sobes.tech AI

AIdan javob

Hibernate'da optimistik qulitleme @Version anotasyonu yordamida amalga oshiriladi. Bu anotatsiya entitiyaga (masalan, version) maxsus maydon qo'shadi va har bir yozuv yangilanishida avtomatik ravishda oshadi. Saqlashda Hibernate ma'lumotlar bazasidagi versiya bilan yangilayotgan ob'ektning versiyasini tekshiradi. Agar versiyalar mos kelmasa, bu boshqa bir tranzaksiya tomonidan ma'lumotlar o'zgartirilganligini anglatadi va OptimisticLockException istisnosi chiqariladi.

Misol:

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

    @Version
    private int version;

    private String name;
    private int quantity;

    // getterlar va setterlar
}

Shunday qilib, bir vaqtning o'zida bir xil yozuvga kirishda, agar bir foydalanuvchi ma'lumotlarni yangilasa va boshqasi eskirgan versiyani saqlashga harakat qilsa, Hibernate muammo aniqlaydi va ma'lumotlarni boshqasining o'zgarishlarini hisobga olmasdan yozib qo'yishni oldini oladi.