Utilisation de StatelessSession pour le traitement par lots

De la documentation

Si nous avons un cas où nous avons besoin d'insérer 1000 000 lignes/objets:

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();

Pourquoi nous devrions utiliser cette approche? Ce genre de prestation, il nous apporte de la comparaison de statelesssession n':

    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();

Je veux dire, c' ("autres") dernier exemple n'utilise pas de mémoire, pas besoin de synchroniser, nettoyer le cache, puis-ce censé être la meilleure pratique pour les cas comme cela? Pourquoi utiliser précédente une alors?

source d'informationauteur ses