"Vælg ... for opdatering" understøttes i Hibernate via LockMode.UPGRADE som du for eksempel kan indstille i en NamedQuery .
Men brug af applikation/manuel tabelrækkelåsning har flere ulemper (især når en databaseforbindelse bliver brudt halvvejs i en transaktion), og din opdateringsprocedure kan undvære det:
- Start transaktion.
- opdater tabelsæt state='PENDING', server_id=1 hvor state='I PROGRESS';
- Forpligt transaktion
- vælg fra tabel hvor state='PENDING' og server_id=1;
- [procesregistreringer]
Hver server skal have et unikt nummer for at dette fungerer, men det vil være mindre fejltilbøjeligt, og du lader DBMS'en gøre det, den skal være god til:isolation (se ACID ).