Sobes.tech
Junior — Middle

Vai vari sniegt piemēru Java situācijai, kad tiek izmantota pesimistiska bloķēšana datu piekļuvei, lai novērstu konfliktus?

sobes.tech AI

Atbilde no AI

Pesimistiskā bloķēšana Java bieži tiek izmantota, kad ir nepieciešams nodrošināt, ka dati netiks mainīti citu pavedienu laikā, kad tiek veikta kritiska operācija. Piemēram, strādājot ar datu bāzi caur JPA/Hibernate, var izmantot lock() metodi ar bloķēšanas tipu PESSIMISTIC_WRITE, lai novērstu vienlaicīgas tā paša ieraksta izmaiņas:

EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();

// Iegūt objektu ar rakstīšanas bloķēšanu
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);

// Veikt izmaiņas
entity.setValue(newValue);

// Saglabāt izmaiņas
em.persist(entity);
tx.commit();

Šajā piemērā, kamēr transakcija nav pabeigta, citas transakcijas, kas mēģina iegūt bloķējumu uz to pašu ierakstu, gaidīs, kas novērš konfliktus un nodrošina datu integritāti.