Има много възможни пречки пред груповите операции. Най-добрият подход зависи до голяма степен от това как изглеждат вашите данни. Разгледайте Наръчник за хибернация раздел за пакетна обработка.
Като минимум се уверете, че използвате следния шаблон (копиран от ръководството):
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();
Ако съпоставяте плосък файл с много сложна обектна графика, може да се наложи да станете по-креативни, но основният принцип е, че трябва да намерите баланс между изпращането на големи парчета данни в базата данни с всяко изтриване/комит и избягване разширяване на размера на кеша на ниво сесия.
И накрая, ако не се нуждаете от Hibernate, за да обработвате каквито и да било колекции или каскади, за да бъдат данните ви правилно вмъкнати, помислете за използването на StatelessSession .