• Menu
  • Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

JavaBeat

Java Tutorial Blog

  • Java
    • Java 7
    • Java 8
    • Java EE
    • Servlets
  • Spring Framework
    • Spring Tutorials
    • Spring 4 Tutorials
    • Spring Boot
  • JSF Tutorials
  • Most Popular
    • Binary Search Tree Traversal
    • Spring Batch Tutorial
    • AngularJS + Spring MVC
    • Spring Data JPA Tutorial
    • Packaging and Deploying Node.js
  • About Us
    • Join Us (JBC)
  • Java
    • Java 7
    • Java 8
    • Java EE
    • Servlets
  • Spring Framework
    • Spring Tutorials
    • Spring 4 Tutorials
    • Spring Boot
  • JSF Tutorials
  • Most Popular
    • Binary Search Tree Traversal
    • Spring Batch Tutorial
    • AngularJS + Spring MVC
    • Spring Data JPA Tutorial
    • Packaging and Deploying Node.js
  • About Us
    • Join Us (JBC)

Batch insert in Hibernate

July 13, 2008 //  by Krishna Srinivasan//  Leave a Comment

This example program shows how to insert multiple rows using the batch processing in hibernate. when there are thousand of rows to be persisted, everytime iterating and inserting will cause the memory problem. Hibernate stores all the persisted objects in the memory. To avoid this problem use batch processing in the hibernate.

also read:

  • Introduction to Hibernate
  • Hibernate Interview Questions
  • Interceptors in Hibernate
  • Hibernate Books

To use the batch processing feature, first set hibernate.jdbc.batch_size as 50. This will tell the hibernate container that every 50 rows to be inserted as batch. Also there is a slight change in the code.

for (int i =0;i<100;i++)
        {
            EmployeeInfo employeeInfo = new EmployeeInfo();
            employeeInfo.setSno(1);;
            employeeInfo.setName("Value : "+String.valueOf(i));
            session.save(employeeInfo);
            if (i%50 == 0)
            {
                session.flush();
                session.clear();
            }
        }

the above code is used for inserting 50 rows. Do remember to call session.flush() every time. That will make the data to be persisted.

JavaBeatHibernateExample.java

package javabeat.net.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

/**
 * source : www.javabeat.net
 */
public class JavaBeatHibernateExample {
    public static void main(String args[]){
        Configuration configuration = new Configuration();
        configuration.addClass(javabeat.net.hibernate.EmployeeInfo.class);
        configuration.setProperty("hibernate.dialect",
                "org.hibernate.dialect.DerbyDialect");
        configuration.setProperty("hibernate.connection.url",
                "jdbc:derby://localhost:1527/SampleDB");
        configuration.setProperty("hibernate.connection.username", "root");
        configuration.setProperty("hibernate.connection.driver_class",
                "org.apache.derby.jdbc.ClientDriver");
        configuration.setProperty("hibernate.connection.password", "root");
        configuration.setProperty("hibernate.transaction.factory_class",
                "org.hibernate.transaction.JDBCTransactionFactory");
        configuration.setProperty("hibernate.current_session_context_class",
                "thread");
        configuration.setProperty("hibernate.show_sql", "true");
        configuration.setProperty("hibernate.jdbc.batch_size", "50");
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        for (int i =0;i<100;i++)
        {
            EmployeeInfo employeeInfo = new EmployeeInfo();
            employeeInfo.setSno(1);;
            employeeInfo.setName("Value : "+String.valueOf(i));
            session.save(employeeInfo);
            if (i%50 == 0)
            {
                session.flush();
                session.clear();
            }
        }
        transaction.commit();
        session.close();
    }
}

EmployeeInfo.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
    <class name="javabeat.net.hibernate.EmployeeInfo" table="Employee_Info">
        <id name="sno" column="sno" type="java.lang.Integer">
           <generator class="increment"/>
        </id>
        <property name="name" column="name" type="java.lang.String"/>
    </class>
</hibernate-mapping>

Category: HibernateTag: batch insert

About Krishna Srinivasan

He is Founder and Chief Editor of JavaBeat. He has more than 8+ years of experience on developing Web applications. He writes about Spring, DOJO, JSF, Hibernate and many other emerging technologies in this blog.

Previous Post: « Hibernate basic configuration example
Next Post: Basic steps to configure Log4j using xml and properties file »

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Primary Sidebar

Follow Us

  • Facebook
  • Pinterest

FEATURED TUTORIALS

New Features in Spring Boot 1.4

Difference Between @RequestParam and @PathVariable in Spring MVC

What is new in Java 6.0 Collections API?

The Java 6.0 Compiler API

Introductiion to Jakarta Struts

What’s new in Struts 2.0? – Struts 2.0 Framework

JavaBeat

Copyright © by JavaBeat · All rights reserved
Privacy Policy | Contact