Junior — Middle
Ar gali pateikti pavyzdį Java situacijai, kai naudojama pesimistinė užrakinimo priemonė konfliktams išvengti prieigoj prie duomenų?
sobes.tech AI
Atsakymas iš AI
Pesimistinis užraktas Java dažnai naudojamas, kai reikia užtikrinti, kad duomenys nebus keičiami kitų srautų vykdymo metu. Pavyzdžiui, dirbant su duomenų baze per JPA/Hibernate, galima naudoti lock() metodą su PESSIMISTIC_WRITE užrakto tipu, kad būtų išvengta vienalaikio to paties įrašo keitimo:
EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();
// Gauti objektą su rašymo užraktu
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);
// Atlikti pakeitimus
entity.setValue(newValue);
// Išsaugoti pakeitimus
em.persist(entity);
tx.commit();
Šiame pavyzdyje, kol transakcija nėra baigta, kitos transakcijos, bandančios gauti užraktą ant to paties įrašo, lauks, kas užkerta kelią konfliktams ir užtikrina duomenų vientisumą.