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 .