Sobes.tech
Junior — Middle

Můžeš uvést příklad situace v Java, kdy se používá pesimistické zamykání k prevenci konfliktů při přístupu k datům?

sobes.tech AI

Odpověď od AI

Pesimistické uzamčení v Java se často používá, když je třeba zajistit, že data nebudou během provádění kritické operace změněna jinými vlákny. Například při práci s databází přes JPA/Hibernate lze použít metodu lock() s typem uzamčení PESSIMISTIC_WRITE, aby se zabránilo současným změnám stejného záznamu:

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

// Získání objektu s uzamčením pro zápis
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);

// Provádění změn
entity.setValue(newValue);

// Uložení změn
em.persist(entity);
tx.commit();

V tomto příkladu budou ostatní transakce, které se pokusí získat zámek na stejný záznam, čekat, dokud nebude transakce dokončena, což zabrání konfliktům a zajistí integritu dat.