Opcja „Wybierz... do aktualizacji” jest obsługiwana w Hibernate przez LockMode.UPGRADE które możesz ustawić na przykład w NamedQuery .
Jednak używanie aplikacji/ręcznego blokowania wierszy tabeli ma kilka wad (zwłaszcza, gdy połączenie z bazą danych zostanie zerwane w połowie transakcji), a Twoja procedura aktualizacji może się bez tego obejść:
- Rozpocznij transakcję.
- zaktualizuj zestaw tabel state='PENDING', server_id=1 gdzie state='IN PROGRESS';
- Zatwierdź transakcję
- wybierz z tabeli, gdzie state='PENDING' i server_id=1;
- [przetwarzanie rekordów]
Aby to zadziałało, każdy serwer musi mieć unikalny numer, ale będzie on mniej podatny na błędy i pozwolisz, aby DBMS robił to, w czym powinien być dobry:izolacja (patrz KWAS ).