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,
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:
Download Source code (Src Files – applicationContext.xml, pojo, DAO, DAOImpl and execution)