Sobes.tech
Junior — Middle

Môžeš uviesť príklad situácie v Jave, keď sa používa pesimistické zamykanie na prevenciu konfliktov pri prístupe k údajom?

sobes.tech AI

Odpoveď od AI

Pesimistické uzamknutie v Jave sa často používa, keď je potrebné zabezpečiť, že údaje nebudú počas vykonávania kritickej operácie zmenené inými vláknami. Napríklad pri práci s databázou cez JPA/Hibernate môžete použiť metódu lock() s typom uzamknutia PESSIMISTIC_WRITE, aby ste zabránili súčasným zmenám toho istého záznamu:

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

// Získanie objektu s uzamknutím pre zápis
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);

// Vykonanie zmien
entity.setValue(newValue);

// Uloženie zmien
em.persist(entity);
tx.commit();

V tomto príklade budú ostatné transakcie, ktoré sa pokúsia získať zámok na ten istý záznam, čakať, kým nebude transakcia ukončená, čo zabraňuje konfliktom a zabezpečuje integritu dát.