"Pilih ... untuk pembaruan" didukung di Hibernate melalui LockMode.UPGRADE yang dapat Anda atur, misalnya, NamedQuery .
Tetapi menggunakan penguncian baris tabel aplikasi/manual memiliki beberapa kelemahan (terutama ketika koneksi database terputus di tengah-tengah transaksi) dan prosedur pembaruan Anda dapat melakukannya tanpanya:
- Mulai transaksi.
- perbarui set tabel state='PENDING', server_id=1 where state='IN PROGRESS';
- Melakukan transaksi
- pilih dari tabel di mana state='PENDING' dan server_id=1;
- [catatan proses]
Setiap server harus memiliki nomor unik agar ini berfungsi, tetapi akan lebih sedikit kesalahan dan Anda membiarkan DBMS melakukan apa yang seharusnya menjadi keahliannya:isolasi (lihat ACID ).