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.