Из документация
Если у нас есть случай, когда нам нужно вставить 1000 000 строк/объектов:
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();
Почему мы должны использовать этот подход? Какую пользу он приносит нам по сравнению с StatelessSession:
StatelessSession session = sessionFactory.openStatelessSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
Customer customer = new Customer(.....);
session.insert(customer);
}
tx.commit();
session.close();
Я имею в виду, что этот ( "альтернативный" ) последний пример не использует память, не нужно синхронизировать, очищать из кэша, тогда это должно быть лучшей практикой для таких случаев? Зачем использовать предыдущий?