Tratamientos batch

Contactar con el profesor

No podemos tener en la sesión de hibernate demasiados objetos porque nos quedaríamos sin memoria. en su lugar haremos un procesamiento por lotes, procesando los registros de 20 en 20 y liberando la sesión

hibernate.cfg.xml

<property name="hibernate.jdbc.batch_size">20</property>
<property name="hibernate.cache.use_second_level_cache">false</property>

Main.java

public class Main {
	public static void main(String[] args) {

		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction tx = session.beginTransaction();

		for (int i = 0; i < 100000; i++) {
			Libro l = new Libro();
			l.setTitulo("El Quijote " + i);

			session.save(l);
			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();

	}
}

Documentación oficial:

https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/chapters/batch/Batching.html

← Herencia con joins
Filtros →

Aviso Legal | Política de privacidad