Junior — Middle
Java'da ma'lumotlarga kirishda nizolarni oldini olish uchun pessimist bloklashdan foydalaniladigan holat misolini keltira olasizmi?
sobes.tech AI
AIdan javob
Java'da pessimist blokirovka odatda muhim operatsiya davomida ma'lumotlar boshqa oqimlar tomonidan o'zgartirilmasligini ta'minlash uchun ishlatiladi. Masalan, JPA/Hibernate orqali ma'lumotlar bazasi bilan ishlayotganda, lock() metodidan PESSIMISTIC_WRITE blokirovkasi turi bilan foydalanish mumkin, bu esa ayni yozuvni bir vaqtning o'zida o'zgartirishni oldini oladi:
EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();
// Yozish uchun blokirovka bilan obyektni olish
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);
// O'zgartirishlar qilish
entity.setValue(newValue);
// O'zgartirishlarni saqlash
em.persist(entity);
tx.commit();
Ushbu misolda, tranzaksiya tugamaguncha, boshqa tranzaktsiyalar ayni yozuv uchun blok olishga harakat qilganda kutadi, bu esa nizolarni oldini oladi va ma'lumotlarning yaxlitligini ta'minlaydi.