Sobes.tech
Junior — Middle

Java-ში მონაცემთა წვდომის დროს კონფლიქტების თავიდან ასაცილებლად პესიმისტური ბლოკირების გამოყენების მაგალითი შეგიძლია მოყვე?

sobes.tech AI

პასუხი AI-სგან

Java-да პესიმისტური ბლოკირება ხშირად გამოიყენება, როდესაც საჭიროა უზრუნველყოს, რომ მონაცემები სხვა ნაკადების მიერ არ შეიცვლება კრიტიკული ოპერაციის შესრულების დროს. მაგალითად, JPA/Hibernate-ის საშუალებით მონაცემთა ბაზასთან მუშაობისას, შეგიძლიათ გამოიყენოთ მეთოდი lock() პესიმისტური დაწერის ტიპის ბლოკირებით, რათა თავიდან აიცილოთ ერთდროულად ერთი და იგივე ჩანაწერის ცვლილება:

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();

ამ მაგალითში, სანამ ტრანზაქცია არ დასრულდება, სხვა ტრანზაქციები, რომლებიც ცდილობენ იგივე ჩანაწერის ბლოკირებას, ელოდებიან, რაც თავიდან აცილებს კონფლიქტებს და უზრუნველყოფს მონაცემების მთლიანობას.