Spring with Hibernate simple example using Injection

 

We all know that Spring framework is a widely used framework along with popular ORM tool Hibernate. IN this tutorial lets see simple Spring example with Hibernate integration using Injection. Here we used Spring 4 integrate with Hibernate 4 with annotation based for demonstration. Best thing here we can use old version Hibernate 3 also by both xml and annotation based.  Just need to make sure that pom.xml and spring.xml are properly edited. 
Spring with Hibernate simple example using Injection


pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.app.sphiber</groupId>
 <artifactId>springhibernate</artifactId>
 <packaging>war</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>spring hibernate</name>

 <properties>
  <java.version>1.6</java.version>
  <spring-framework.version>4.0.3.RELEASE</spring-framework.version>
  <hibernate.version>4.3.5.Final</hibernate.version>
  <logback.version>1.0.13</logback.version>
  <slf4j.version>1.7.5</slf4j.version>
 </properties>

 <dependencies>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>${spring-framework.version}</version>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-tx</artifactId>
   <version>${spring-framework.version}</version>
  </dependency>

  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-orm</artifactId>
   <version>${spring-framework.version}</version>
  </dependency>

  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-entitymanager</artifactId>
   <version>${hibernate.version}</version>
  </dependency>
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-core</artifactId>
   <version>${hibernate.version}</version>
  </dependency>

  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.9</version>
  </dependency>
  <dependency>
   <groupId>commons-dbcp</groupId>
   <artifactId>commons-dbcp</artifactId>
   <version>1.4</version>
  </dependency>
  
  <dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-api</artifactId>
   <version>${slf4j.version}</version>
   <scope>compile</scope>
  </dependency>
  <dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version>${logback.version}</version>
   <scope>runtime</scope>
  </dependency>
 </dependencies>
 
 <build>
  <finalName>springhibernate</finalName>  
 </build>

</project>




spring.xml

<?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: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.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="jdbc:mysql://localhost:3306/roboticapp" />
  <property name="username" value="root" />
  <property name="password" value="root" />
 </bean>


 <bean id="hibernateSessionFac"
  class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="annotatedClasses">
   <list>
    <value>com.app.sphiber.model.Employee</value>
   </list>
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
    <prop key="hibernate.format_sql">false</prop>
    <prop key="hibernate.show_sql">true</prop>
   </props>
  </property>
 </bean>

 
 <bean id="empDao" class="com.app.sphiber.dao.EmpDaoImpl">
  <property name="sessionFactory" ref="hibernateSessionFac" />
 </bean>
</beans>




Employee.java

package com.app.sphiber.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
 
@Entity
@Table(name="employee")
public class Employee {

 @Id 
 private int id;
 
 @Column(name="empname")
 private String empName;
 
 @Column(name="designation")
 private String designation;
 
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getEmpName() {
  return empName;
 }
 public void setEmpName(String empName) {
  this.empName = empName;
 }
 public String getDesignation() {
  return designation;
 }
 public void setDesignation(String designation) {
  this.designation = designation;
 } 
}




EmpDao.java

package com.app.sphiber.dao;

import java.util.List;

import com.app.sphiber.model.Employee;

public interface EmpDao {

 public List<Employee> findByUserName(String empName);
 
 public List<Employee> getAllEmployees();
 
 public void save(Employee emp);
}




EmpDaoImpl.java

package com.app.sphiber.dao;

import java.util.ArrayList;
import java.util.List;

import com.app.sphiber.model.Employee;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;


@Component
public class EmpDaoImpl implements EmpDao{
 
 private SessionFactory sessionFactory;
 
 @Autowired
 public void setSessionFactory(SessionFactory sessionFactory) {
  this.sessionFactory = sessionFactory;
 }
 
 
 @SuppressWarnings("unchecked")
 @Override
 public List<Employee> findByUserName(String empName) {
  
  List<Employee> emp = new ArrayList<Employee>();
  Session session = null;
  session = this.sessionFactory.openSession();
  session.beginTransaction();  
  String qry = "from Employee where empName = '"+empName+"'";
  Query query = session.createQuery(qry);
  emp = query.list();
  session.close();
  
  return emp;

 }
 
 @Override
 public void save(Employee emp) {
  Session session = null;
  session = sessionFactory.openSession();
  session.beginTransaction();
  session.save(emp);
  session.getTransaction().commit();
  session.close();  
 }

 @SuppressWarnings("unchecked")
 @Override
 public List<Employee> getAllEmployees() {
  List<Employee> emp = new ArrayList<Employee>();
  Session session = null;
  session = this.sessionFactory.openSession();
  session.beginTransaction();  
  String qry = "from Employee";
  Query query = session.createQuery(qry);
  emp = query.list();
  session.close();
  
  return emp;
 }
}




MyTestClass.java

package com.app.sphiber;

import java.util.ArrayList;
import java.util.List;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.app.sphiber.dao.EmpDao;
import com.app.sphiber.model.Employee;

public class MyTestClass {

 public static void main(String[] args) {
  
  ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("spring.xml");

  EmpDao dao = appContext.getBean(EmpDao.class);
  
  Employee emp = new Employee();
  emp.setId(10);
  emp.setEmpName("Steve");
  emp.setDesignation("COO");
  dao.save(emp);
  
  List<Employee> list = new ArrayList<Employee>();
  list = dao.findByUserName("Steve");
  for (Employee employee : list) {
   System.out.println("DESIGNATION : "+ employee.getDesignation());
  }
  
  
  List<Employee> list1 = new ArrayList<Employee>();
  list1 = dao.getAllEmployees();
  for (Employee employee : list1) {
   System.out.println("EMP NAME : "+ employee.getDesignation());
  }
  
  
  appContext.close();
 }
}




Spring with Hibernate simple example using Injection

Also you can download complete project code in this link.

No comments:
Write comments