На странице Hibernate есть эта статья: http://docs.jboss.org/hibernate/orm/4.2/manual/en-US/html/ch15.html
В соответствии с ними вам потребуется что-то вроде этого:
create(list);
// ------------------------
public static void create(List<Object> objList) throws DatabaseException {
Session hsession = null;
try {
hsession = SqlDataHibernateUtil.getSessionFactory().openSession();
Transaction htransaction = hsession.beginTransaction();
int count = 0;
for(Agagf x: objList) {
hsession.save(obj);
if ( ++count % 20 == 0 ) { //20, same as the JDBC batch size
//flush a batch of inserts and release memory:
hsession.flush();
hsession.clear();
count = 0;
}
}
} catch (HibernateException ex) {
throw new DatabaseException(ex);
} finally {
htransaction.commit();
if (hsession != null) {
hsession.close();
}
}
}
Кроме того, конфигурация для включения пакетной обработки:
если вы выполняете пакетную обработку, вам необходимо разрешить использование пакетной обработки JDBC.Это абсолютно необходимо, если вы хотите добиться оптимальной производительности.Установите размер пакета JDBC на разумное число (например, 10-50):
hibernate.jdbc.batch_size 20
Редактировать: В вашем случае поиграйтесь с размером пакета, чтобы лучше соответствовать вашему объему.Просто не забудьте сделать одинаковый размер в обеих конфигурациях и операторе if для сброса.