"Seleziona... per l'aggiornamento" è supportato in Hibernate tramite LockMode.UPGRADE che puoi impostare, ad esempio, un NamedQuery .
Ma l'utilizzo del blocco manuale/applicazione delle righe di tabella presenta diversi inconvenienti (soprattutto quando una connessione al database viene interrotta a metà transazione) e la procedura di aggiornamento può farne a meno:
- Avvia transazione.
- tabella di aggiornamento set state='PENDING', server_id=1 dove state='IN CORSO';
- Compra transazione
- seleziona dalla tabella dove state='PENDING' e server_id=1;
- [processi record]
Ogni server deve avere un numero univoco affinché funzioni, ma sarà meno soggetto a errori e lascerai che il DBMS faccia ciò in cui dovrebbe essere bravo:isolamento (vedi ACID ).