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.