Curso de Hibernate | Tratamientos batch

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

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

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.