Sobes.tech
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.