Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pilih untuk pembaruan lewati terkunci dari level JPA

Hibernate menyediakan mode Kunci UPGRADE_SKIPLOCKED.

Menggunakan JPA dan Hibernate, untuk menghasilkan "SKIP_LOCKED" sesuai Hibernasi LockMode dokumentasi, Anda harus menggabungkan PESSIMISTIC_WRITE JPA LockModeType :

entityManager.find(Department.class, 1, LockModeType.PESSIMISTIC_WRITE);

dan setelan Waktu tunggu kunci, seperti misalnya di persistensi.xml untuk unit persistensi Anda:

<properties>
   <property name="javax.persistence.query.timeout" value="-2"/>
</properties>

(Perhatikan bahwa Anda juga dapat mengonfigurasi LockMode ini untuk kueri kompleks)

SKIP LOCKED bukan bagian dari ANSI SQL. Beberapa RDBMS berikut menyediakan ini sebagai fitur khusus:

Jadi dengan JPA murni, tidak mungkin untuk menentukan "SKIP LOCKED" dalam kueri. Memang, seperti yang didokumentasikan dalam LockModeType , JPA 2.1 hanya mendukung berikut ini:

  • TIDAK ADA
  • OPTIMIS
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • BACA
  • MENULIS

Namun, untuk mengaktifkan SKIP LOCKED dalam kueri Anda, Anda dapat menggunakan alternatif berikut:

  • Gunakan fitur penerapan JPA tertentu, seperti Hibernasi LockMode yang memungkinkan untuk menentukan SKIP LOCKED melalui kueri JPA, berkat kombinasi PESSIMISTIC_WRITE Pengaturan khusus LockModeType Lock Timeout seperti yang dijelaskan di atas
  • Buat kueri SQL asli seperti yang Anda lakukan


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java ResultSet.getString() untuk bidang Tanggal menampilkan 00:00:00.0

  2. Mengoptimalkan ukuran pengambilan JDBC dengan menggunakan application.properties Spring Boots

  3. Alternatif untuk CASE di Oracle 8i

  4. Cara Memindahkan File dari Satu Direktori ke Direktori Lain Menggunakan PL SQL

  5. Bukan kesalahan ekspresi GROUP BY