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

Sisipkan massal atau perbarui dengan Hibernate?

Ada banyak kemungkinan hambatan dalam operasi massal. Pendekatan terbaik sangat bergantung pada seperti apa data Anda. Lihat Panduan Hibernasi bagian tentang pemrosesan batch.

Minimal, pastikan Anda menggunakan pola berikut (disalin dari manual):

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

for ( int i=0; i<100000; i++ ) {
Customer customer = new Customer(.....);
session.save(customer);
    if ( i % 20 == 0 ) { //20, same as the JDBC batch size
        //flush a batch of inserts and release memory:
        session.flush();
        session.clear();
    }
}

tx.commit();
session.close();

Jika Anda memetakan file datar ke grafik objek yang sangat kompleks, Anda mungkin harus menjadi lebih kreatif, tetapi prinsip dasarnya adalah Anda harus menemukan keseimbangan antara mendorong potongan data berukuran baik ke database dengan setiap flush/komit dan menghindari meledakkan ukuran cache tingkat sesi.

Terakhir, jika Anda tidak memerlukan Hibernate untuk menangani koleksi atau cascading agar data Anda dimasukkan dengan benar, pertimbangkan untuk menggunakan StatelessSession .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. permata mysql2 dikompilasi untuk perpustakaan klien mysql yang salah

  2. Bagaimana cara mengelompokkan bidang tanggal untuk mendapatkan hasil triwulanan di MySQL?

  3. Tetapkan waktu eksekusi maksimum di MYSQL / PHP

  4. Cara terbaik menyimpan informasi pengguna dan login pengguna dan kata sandi

  5. Cara Mengatasi Akses Ditolak Untuk Pengguna 'root'@'localhost' (menggunakan Kata Sandi:Ya) Saat Menghubungkan Database MySQL