Hibernate: Simple Example

Hibernate is a powerful ORM tool which makes developers life very easy. As we all read that Hibernate comes with its own session and transaction management features and also as a Java developer its not mandatory to have SQL knowledge. In below example we are going to see simple example with Employee class where we used to do operations like Create, Update, Read and Delete (CURD). For demo purpose we use MySQL connector and Hibernate 3 version.
Hibernate - Simple Example.png


pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

 <modelVersion>4.0.0</modelVersion>
 <groupId>com.app.hiber</groupId>
 <artifactId>hibernatesample</artifactId>
 <packaging>war</packaging>
 <version>0.0.1-SNAPSHOT</version>
 <name>Hibernate Sample</name>
 <description>Hibernate sample application</description>

 <dependencies>

  <!-- MySQL database driver -->

  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.9</version>
   </dependency>

  <!-- Hibernate framework -->

  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-core</artifactId>
   <version>3.6.3.Final</version>
  </dependency>

  <dependency>
   <groupId>javassist</groupId>
   <artifactId>javassist</artifactId>
   <version>3.12.1.GA</version>
  </dependency>
 </dependencies>

 <properties>
  <java.version>1.6</java.version>  
 </properties>

</project>


hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
   <!--  Mysql Setting -->
   <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/roboticapp</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
   
   <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  
  
        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">update</property>

        <!-- Names the annotated entity class -->
        <mapping class="com.app.hiber.models.Employee"/>
        
        
    </session-factory>

</hibernate-configuration>


Employee.java
package com.app.hiber.models;

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;
 } 
}


DBCon.java
package com.app.hiber.dao;

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


public class DBCon {
 
 private static SessionFactory factory = null;
 
 private DBCon(){}
 
 public static SessionFactory getSessionFactory(){
  synchronized (DBCon.class) {
   if(factory == null){
    factory=new Configuration().configure().buildSessionFactory();    
   }
  }  
  return factory;
 }
}


EmpService.java
package com.app.hiber.dao;

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

import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.classic.Session;

import com.app.hiber.models.Employee;

public class EmpService {
 
 private SessionFactory factory = null;
 
 public EmpService() {
  this.factory = DBCon.getSessionFactory();
 }
 
 public void addEmployee(Employee emp){
  Session session = null;
  try{
   session = factory.openSession();
   session.beginTransaction();
   
   session.save(emp);
   
   session.getTransaction().commit();

  }catch(Exception e){
   e.printStackTrace();
  }finally{
   if(session != null) session.close();
  }  
 }
 
 public void updateEmployee(String name, int id){
  
  Session session = null;
  try{
   
   session = factory.openSession();
   session.beginTransaction();
   String hql = "UPDATE Employee SET empName = :name WHERE id = :id";
   
   Query query = session.createQuery(hql);
   query.setParameter("name", name);
   query.setParameter("id", id);
   
   int result = query.executeUpdate();
   session.getTransaction().commit();
 
   System.out.println("Rows affected : " + result);
  }catch(Exception e){
   e.printStackTrace();
  }finally{
   if(session != null) session.close();
  }
 }
 
 
 @SuppressWarnings("unchecked")
 public List<Employee> readEmployee(int id){
  List<Employee> list = new ArrayList<Employee>();
  Session session = null;
  try{
   
   session = factory.openSession();
   session.beginTransaction();
   String hql = "FROM Employee WHERE id = "+id;
   
   Query query = session.createQuery(hql);
   
   list = query.list();
 
  }catch(Exception e){
   e.printStackTrace();
  }finally{
   if(session != null) session.close();
  }
  return list;
 }
 
 public void deleteEmployee(int id){
  
  Session session = null;
  try{
   
   session = factory.openSession();
   session.beginTransaction();
   String hql = "DELETE FROM Employee WHERE id = :id";
   
   Query query = session.createQuery(hql);
   query.setParameter("id", id);
   
   int result = query.executeUpdate();
   session.getTransaction().commit();
 
   System.out.println("Rows affected : " + result);
  }catch(Exception e){
   e.printStackTrace();
  }finally{
   if(session != null) session.close();
  }
 }
}


DemoTest.java
package com.app.hiber;

import java.util.List;

import com.app.hiber.dao.EmpService;
import com.app.hiber.models.Employee;

public class DemoTest {

 public static void main(String[] args) {
  
  Employee emp = new Employee();
  emp.setId(1000);
  emp.setEmpName("James");
  emp.setDesignation("CEO");
  
  //Create
  EmpService eSer = new EmpService();
  eSer.addEmployee(emp);
  
  //Update 
  eSer.updateEmployee("James 007", 1000);
  
  //Read
  List<Employee> list = eSer.readEmployee(1000);
  System.out.println(list.get(0).getEmpName());
  
  
  //Delete
  eSer.deleteEmployee(1000);
  
 }
}

Hibernate: Simple Example

Sample project can be download from this link.

No comments :

Post a Comment