Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

StaleObjectStateException pada pembaruan frekuensi tinggi

Sepertinya Anda telah mengonfigurasi Hibernate untuk menggunakan kontrol konkurensi yang optimis . Itu berarti tabel Pengguna Anda memiliki bidang versi yang ditingkatkan Hibernasinya pada setiap pembaruan baris.

Kemungkinan besar transaksi Anda dimulai di awal permintaan HTTP dan berakhir di akhir respons HTTP. Artinya, proses pengeditan pengguna terdiri dari dua transaksi:satu transaksi untuk mengisi formulir web dan satu transaksi untuk menyimpan perubahan.

Dalam hal ini, mengubah tingkat isolasi database tidak akan ada gunanya. Kemungkinan besar yang akan Anda dapatkan hanyalah kinerja dan skalabilitas yang lebih buruk .

Bukan hal yang buruk untuk memiliki StaleObjectException s. Ini mencerminkan dunia nyata - orang benar-benar mengerjakan hal yang sama sesekali dan konflik dapat terjadi. Pertanyaannya adalah, ketika konflik telah terdeteksi, bagaimana Anda menyelesaikannya dengan cara yang memuaskan pengguna akhir? Bisakah itu diselesaikan tanpa bantuan pengguna?

Strategi yang mungkin bisa dilakukan adalah

  • menimpa perubahan pengguna sebelumnya (seringkali bukan yang Anda inginkan - karenanya perlu kontrol konkurensi),

  • tampilkan pesan kesalahan yang meminta pengguna untuk menyegarkan dan melakukan perubahannya lagi,

  • menggabungkan perubahan secara otomatis tanpa menimpa perubahan pengguna sebelumnya (terkadang mungkin)

  • beri tahu pengguna tentang kedaluwarsa datanya dan tawarkan cara untuk menggabungkan perubahannya secara manual

Itu semua tergantung pada konteksnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL- mengoptimalkan pernyataan kasus

  2. Bagaimana cara menggunakan If Then Else dalam kueri pembaruan MySQL?

  3. Cara membuat kueri di Drupal 8

  4. Jalankan PDO dengan array yang berisi nilai null

  5. MySQL:Cari string yang sama di beberapa kolom