Паскаль
В вашем примере для вставки 100000 записей это делается в рамках одной транзакции, так как commit () вызывается только в конце. Оказывает ли это большое давление на базу данных? Кроме того, в случае отката стоимость будет слишком высокой.
Будет ли следующий подход лучше?
EntityManager em = ...;
for ( int i=0; i<100000; i++ ) {
if(!em.getTransaction().isActive()) {
em.getTransaction().begin();
}
Customer customer = new Customer(.....);
em.persist(customer);
if ((i+1) % 20 == 0 ) { //20, same as the JDBC batch size
//flush and commit of inserts and release memory:
em.getTransaction().commit();
em.clear();
}
}
session.close();