Spring Hibernate Integration Example – CRUD Operations
In this article, We are going to see how to perform CRUD Operations with the help of Spring and Hibernate. We are going to use Spring Dependency Injection concept and we are also going to declare Hibernate Properties in Spring Application Context XML file.

I have downloaded and used some jar files in this application,
Jar files Needed:
org.apache.commons.dbcp.jar
commons-pool-1.6.jar
Other than this, Spring Framework, Hibernate and MySQL JDBC Driver are required

Here is the application Structure,
structure

javainfinite.pojo

package javainfinite.pojo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 *
 * @author Vikram
 */
@Entity

public class EmployeeDetails {
    
     @Id @GeneratedValue
    int id;
    
    String ename;
    String enumber;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getEnumber() {
        return enumber;
    }

    public void setEnumber(String enumber) {
        this.enumber = enumber;
    }
    
}

javainfinite.DAO

package javainfinite.DAO;

import java.util.List;
import javainfinite.pojo.EmployeeDetails;

/**
 *
 * @author Vikram
 */
public interface EmployeeDAO {
    
    public void SaveEmployee(EmployeeDetails employeeDetails);
    public List<EmployeeDetails> getAllEmployees();
    public void Delete (EmployeeDetails employeeDetails);
    public void Update(Integer id, String ename, String enumber);
    
}

javainfinite.DAOImpl

package javainfinite.DAOImpl;

import java.util.ArrayList;
import java.util.List;
import javainfinite.DAO.EmployeeDAO;
import javainfinite.pojo.EmployeeDetails;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.SessionFactory;


/**
 *
 * @author Vikram
 */
public class EmployeeDAOImpl implements EmployeeDAO {
    

    private SessionFactory sessionFactory;

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public void SaveEmployee(EmployeeDetails employeeDetails) {
        Session session = this.sessionFactory.openSession();
        Transaction trans = session.beginTransaction();
        session.save(employeeDetails);
        trans.commit();
        session.close();
    }


    public List<EmployeeDetails> getAllEmployees() {
         Session session = this.sessionFactory.openSession();
        List<EmployeeDetails> employeeList = new ArrayList();
        Query query = session.createQuery("From EmployeeDetails");
        employeeList = query.list();
        session.close();
        return employeeList;    
    }


    public void Delete(EmployeeDetails employeeDetails) {
         Session session = this.sessionFactory.openSession();
        Transaction trans = session.beginTransaction();
        session.delete(employeeDetails);
        trans.commit();
        session.close();
    }
    
     public void Update(Integer id, String ename, String enumber) {
        Session session = this.sessionFactory.openSession();
        Transaction trans = session.beginTransaction();
        EmployeeDetails employeeDetails =(EmployeeDetails) session.load(EmployeeDetails.class,id);
        employeeDetails.setEname(ename);
        employeeDetails.setEnumber(enumber);
        session.update(employeeDetails);
        trans.commit();
        session.close();
    }
    
}

applicationContext.xml

<?xml version='1.0' encoding='UTF-8' ?>
<!-- was: <?xml version="1.0" encoding="UTF-8"?> -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">



    
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="databasePath" />
		<property name="username" value="username" />
		<property name="password" value="password" />
    </bean>
    
    <bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="annotatedClasses">
			<list>
				<value>javainfinite.pojo.EmployeeDetails</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                                <prop key="hibernate.hbm2ddl.auto">update</prop>
				<prop key="hibernate.show_sql">false</prop>
			</props>
		</property>
</bean>

<bean id="EmployeeDAO" class="javainfinite.DAOImpl.EmployeeDAOImpl">
		<property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean id="employeeDetails" class="javainfinite.pojo.EmployeeDetails">
    
</bean>



</beans>

javainfinite.execution

package javainfinite.execution;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import javainfinite.DAO.EmployeeDAO;
import javainfinite.pojo.EmployeeDetails;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 *
 * @author Vikram
 */
public class execute {
    
    public static void main(String args[]){
        int updateId = 0;
        
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        EmployeeDAO eDao = (EmployeeDAO) ac.getBean("EmployeeDAO");
        EmployeeDetails employeeDetails1 =(EmployeeDetails) ac.getBean("employeeDetails");
        EmployeeDetails employeeDetails2 =(EmployeeDetails) ac.getBean("employeeDetails");
        EmployeeDetails employeeDetails3 =(EmployeeDetails) ac.getBean("employeeDetails");

        // Inserting Employee - Create
        System.out.println("----------CREATE--------");
        employeeDetails1.setEname("Alpha");
        employeeDetails1.setEnumber("A0121");
        eDao.SaveEmployee(employeeDetails1);
        
        employeeDetails2.setEname("Beta");
        employeeDetails2.setEnumber("B2321");
        eDao.SaveEmployee(employeeDetails2);
        
        employeeDetails3.setEname("Charlie");
        employeeDetails3.setEnumber("C2345");
        eDao.SaveEmployee(employeeDetails3);
        
        //Listing All Employees
        System.out.println("----------READ--------");
        List<EmployeeDetails> employeeDetailsList = new ArrayList();
        employeeDetailsList = eDao.getAllEmployees();
        
        for(EmployeeDetails eList: employeeDetailsList){
            System.out.println("Employee ID: "+eList.getId());
            System.out.println("Employee Name: "+eList.getEname());
            System.out.println("Employee Number: "+eList.getEnumber());
        }
        
        //Deleting Employee
        
        System.out.println("----------DELETE (Alpha)--------");
        Scanner input = new Scanner(System.in);
        int id = 0;
        System.out.println("Enter the ID to Delete: ");
        id = input.nextInt();
        EmployeeDetails employeeDetailsDelete =(EmployeeDetails) ac.getBean("employeeDetails");
        
        employeeDetailsDelete.setId(id);
        eDao.Delete(employeeDetailsDelete);
        System.out.println("Record with ID: "+id+" Deleted");
        
        //Listing All Employees
        System.out.println("----------READ--------");
        List<EmployeeDetails> employeeDetailsList1 = new ArrayList();
        employeeDetailsList1 = eDao.getAllEmployees();
        
        for(EmployeeDetails eList: employeeDetailsList1){
            System.out.println("Employee ID: "+eList.getId());
            System.out.println("Employee Name: "+eList.getEname());
            System.out.println("Employee Number: "+eList.getEnumber());
        }
        
        //Update
        System.out.println("----------Update--------");
        System.out.println("Enter the ID to be Updated: ");
        Scanner update = new Scanner(System.in);
        updateId = update.nextInt();
        String ename = "";
        String enumber = "";
        
        System.out.println("Name to be Updated: ");
        ename = update.next();
        System.out.println("Number to be Updated: ");
        enumber = update.next();
        eDao.Update(updateId, ename, enumber );
        System.out.println("Updated");
        
         //Listing All Employees
        System.out.println("----------READ--------");
        List<EmployeeDetails> employeeDetailsList2 = new ArrayList();
        employeeDetailsList2 = eDao.getAllEmployees();
        
        for(EmployeeDetails eList: employeeDetailsList2){
            System.out.println("Employee ID: "+eList.getId());
            System.out.println("Employee Name: "+eList.getEname());
            System.out.println("Employee Number: "+eList.getEnumber());
        }
        
        System.out.println("-------------------------------------------------------------");
    }
    
}

Output:

op1 op2

 Download Source code (Src Files – applicationContext.xml, pojo, DAO, DAOImpl and execution)

 

 

 

By Sri

Leave a Reply

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