Sometimes, we need to save a large number of records in the database. Let's say we need 10,000 records in the database, and we use the basic approach to save the records. The way to do this is as follows:
Session session = SessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( int i=0; i<100000; i++ ) { Employee employee = new Employee(.....); session.save(employee); } tx.commit(); session.close();
Two known issues in the preceding method are as follows:
Hibernate will try to save each object to the database one by one; this will be time consuming and may increase the load on the database and application as well
The application may face
OutOfMemoryException
because hibernate saves all the new employee objects in the second-level cache
To overcome these problems and to make the application faster, we need to use batch processing. Hibernate supports batch processing, which is the same as a JDBC batch processing.