Próbuję zrozumieć, jaki jest efekt wywoływania EntityManager.lock (entity, LockModeType.READ). Dokumentacja API brzmi dla mnie bardzo myląco.JPA: Jak działa blokada odczytu?
Jeśli muszę do równoczesnych wątków i wątku 1 wywołania blokada (entity, LockModeType.READ), wątek 2 nadal czytać i pisać encji?
Czego nauczyłem się do tej pory:
typu lock odczytywane JPA1 jest taka sama jak w JPA2 optymistyczne. Jeśli taka blokada jest ustawiona, EntityManager sprawdza atrybut wersji przed zatwierdzeniem transakcji, ale jej nie aktualizuje. Znalazłem wyjaśnienie dla trybu blokady OPTIMISTIC: Link. Wyszukaj OPTIMISTIC (READ) LockMode Przykład. Tak, jak rozumiem, ustawienie blokady odczytu w wątku 1 nie ma wpływu na wątki 2 ... n. Wszystkie pozostałe wątki mogą nadal czytać i zapisywać encje. Ale gdy transakcja w wątku 1 zostanie zatwierdzona, a inny wątek zaktualizuje jednostkę, transakcja w wątku 1 zostanie wycofana.
Czy rozumiem to poprawnie?
Nadal nie rozumiem. Czy ktoś może zrestrukturyzować zdania lub dodać przykład? – stoefln
Zaktualizowałem swoją odpowiedź, proszę sprawdzić podany link – engma