Junior — Middle
Маслиҳат медиҳед, ки дар Java чӣ гуна ҳолатест, ки барои пешгирии муноқишаҳо дар вақти дастрасӣ ба маълумот, бастани пешгӯишударо истифода мебаранд?
sobes.tech AI
Ҷавоб аз AI
Дарунии фикрӣ дар Java одатан истифода мешавад, вақте ки бояд таъмин кард, ки маълумотҳо дар вақти иҷрои амалиёти критикӣ дигар шохаҳо тағир дода нашаванд. Масалан, ҳангоми кор бо базаи додаҳо тавассути JPA/Hibernate, метавон аз усули lock() бо навъи бастани PESSIMISTIC_WRITE истифода бурд, то тағиротҳои ҳамзамон дар як сабт пешгирӣ шаванд:
EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();
// Гирифтани объект бо бастани навишт
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);
// Иҷрои тағиротҳо
entity.setValue(newValue);
// Захира кардани тағиротҳо
em.persist(entity);
tx.commit();
Дар ин мисол, то анҷоми транзаксия, дигар транзаксияҳое, ки кӯшиш мекунанд, бастани рӯйхати ҳамон сабтро ба даст оранд, интизор мешаванд, ки ин муноқишаҳоро пешгирӣ мекунад ва муттаҳидии маълумотро таъмин мекунад.