Showing posts with label Spring with hibernate. Show all posts
Showing posts with label Spring with hibernate. Show all posts

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.