„Изберете ... за актуализация“ се поддържа в Hibernate чрез LockMode.UPGRADE който можете да зададете например в NamedQuery .
Но използването на приложение/ръчно заключване на редове в таблицата има няколко недостатъка (особено когато връзката с база данни се прекъсне по средата на транзакцията) и вашата процедура за актуализиране може да мине без нея:
- Започнете транзакцията.
- актуализиране на набор от таблица state='PENDING', server_id=1 където state='IN PROGRESS';
- Отвържете транзакция
- изберете от таблица, където state='PENDING' и server_id=1;
- [записи на процеса]
Всеки сървър трябва да има уникален номер, за да работи това, но ще бъде по-малко податлив на грешки и вие позволявате на СУБД да прави това, в което се предполага, че е добра:изолация (вижте ACID ).