Tepatnya, Anda tidak bermaksud penguncian optimis, tetapi konkurensi optimis (tanpa kunci). Menggunakan stempel waktu untuk versi hanya untuk dukungan basis data lama, karena basis data modern dapat (setidaknya secara teoritis) bekerja lebih cepat daripada akurasi penyimpanannya stempel waktu.
Menggunakan properti versi integer sangat sederhana:
- Saat disisipkan:setel versi ke 1
- Saat memperbarui dan menghapus:tingkatkan versi dengan 1 dan tambahkan "where [email protected] " ke setiap pernyataan sql. Kembalikan jumlah record yang diubah. Lempar StaleObjectStateException saat jumlah record yang diubah berbeda dari yang diharapkan.
Secara pribadi, saya tidak akan membuat dua aplikasi terpisah yang menulis data yang sama dalam situasi non-warisan, karena itu berarti logika bisnis harus diduplikasi dan perubahan harus diterapkan ke dua aplikasi, juga ketika perubahan hanya relevan untuk satu dari aplikasi.