Wednesday, 20 June 2012

One To One Annotation Mapping Through Hibernate

Hibernate Annotation of One To One Mapping



Employee.java

package com.lara.pojoClass;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name = "Employee")
public class Employee
{
 @Id
 @GeneratedValue
 @Column(name = "emp_id")
 private int empId;
 @Column(name = "empFirstName")
 private String empFirstName;
 @Column(name = "empLastName")
 private String empLastName;
 @Column(name = "empBirthDay")
 private Date empBirthDay;
 @Column(name = "empCellNo")
 private String empCellNo;
 @OneToOne(mappedBy = "employee", cascade = CascadeType.ALL)
 private EmployeeDetail empDetails;

 public int getEmpId()
 {
  return empId;
 }
 public void setEmpId(int empId)
 {
  this.empId = empId;
 }
 public String getEmpFirstName()
 {
  return empFirstName;
 }
 public void setEmpFirstName(String empFirstName)
 {
  this.empFirstName = empFirstName;
 }
 public String getEmpLastName()
 {
  return empLastName;
 }
 public void setEmpLastName(String empLastName)
 {
  this.empLastName = empLastName;
 }
 public Date getEmpBirthDay()
 {
  return empBirthDay;
 }
 public void setEmpBirthDay(Date empBirthDay)
 {
  this.empBirthDay = empBirthDay;
 }
 public String getEmpCellNo()
 {
  return empCellNo;
 }
 public void setEmpCellNo(String empCellNo)
 {
  this.empCellNo = empCellNo;
 }
 public EmployeeDetail getEmpDetails()
 {
  return empDetails;
 }
 public void setEmpDetails(EmployeeDetail empDetails)
 {
  this.empDetails = empDetails;
 }
}


EmployeeDetail.java

package com.lara.pojoClass;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
@Entity
@Table(name = "EmployeeDetail")
public class EmployeeDetail
{
 @Id
 @Column(name = "emp_id", unique = true, nullable = false)
 @GeneratedValue(generator = "gen")
 @GenericGenerator(name = "gen", strategy = "foreign", parameters = @Parameter(name = "property", value = "employee"))
 private int empId;
 @Column(name = "houseNo")
 private int houseNo;
 @Column(name = "streetName")
 private String streetName;
 @Column(name = "cityName")
 private String cityName;
 @Column(name = "districtName")
 private String districtName;
 @Column(name = "stateName")
 private String stateName;
 @Column(name = "countryName")
 private String countryName;
 @Column(name = "pinNo")
 private long pinNo;
 @OneToOne
 @PrimaryKeyJoinColumn
 private Employee employee;

 public int getEmpId()
 {
  return empId;
 }
 public void setEmpId(int empId)
 {
  this.empId = empId;
 }
 public int getHouseNo()
 {
  return houseNo;
 }
 public void setHouseNo(int houseNo)
 {
  this.houseNo = houseNo;
 }
 public String getStreetName()
 {
  return streetName;
 }
 public void setStreetName(String streetName)
 {
  this.streetName = streetName;
 }
 public String getCityName()
 {
  return cityName;
 }
 public void setCityName(String cityName)
 {
  this.cityName = cityName;
 }
 public String getDistrictName()
 {
  return districtName;
 }
 public void setDistrictName(String districtName)
 {
  this.districtName = districtName;
 }
 public String getStateName()
 {
  return stateName;
 }
 public void setStateName(String stateName)
 {
  this.stateName = stateName;
 }
 public String getCountryName()
 {
  return countryName;
 }
 public void setCountryName(String countryName)
 {
  this.countryName = countryName;
 }
 public long getPinNo()
 {
  return pinNo;
 }
 public void setPinNo(long pinNo)
 {
  this.pinNo = pinNo;
 }
 public Employee getEmployee()
 {
  return employee;
 }
 public void setEmployee(Employee employee)
 {
  this.employee = employee;
 }
}

hibernateForMySQL.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3308/dao</property>
        <property name="connection.username">root</property>
        <property name="connection.password">password</property>
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">2</property>
        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- Enable Hibernate's current session context -->
        <property name="current_session_context_class">org.hibernate.context.ManagedSessionContext</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">false</property>
        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>
        <mapping class="com.lara.pojoClass.Person"/>
        <mapping class="com.lara.pojoClass.EmployeeDetail"/>
        <mapping class="com.lara.pojoClass.Employee"/>
    </session-factory>
</hibernate-configuration>

ManagerForOneToOne.java

 package com.lara.ClientManagerClass;
import java.util.Date;
import java.util.List;
import org.hibernate.Session;
import com.lara.pojoClass.Employee;
import com.lara.pojoClass.EmployeeDetail;
import com.lara.util.HibernateUtil;
public class ManagerForOneToOne
{
 public static void main(String[] args)
 {
  EmployeeDetail empDetail = new EmployeeDetail();
  empDetail.setHouseNo(80);
  empDetail.setStreetName("Co-operative Colony, Kalinga Vihar, Chhend Colony");
  empDetail.setCityName("Rourkela");
  empDetail.setDistrictName("Sundargarh");
  empDetail.setStateName("Odisha");
  empDetail.setCountryName("India");
  empDetail.setPinNo(769004);

  Employee emp = new Employee();
  emp.setEmpFirstName("Sailendra");
  emp.setEmpLastName("Jena");
  emp.setEmpBirthDay(new Date(70782));
  emp.setEmpCellNo("9731728407");
  emp.setEmpDetails(empDetail);
  empDetail.setEmployee(emp);

  Session session = HibernateUtil.getAnnotationSession();
  session.beginTransaction();
  session.save(emp);

  List<Employee> emp1 = session.createQuery("from Employee").list();
  for(Employee e : emp1)
  {
   System.out.println("Employee First Name : "+e.getEmpFirstName());
   System.out.println("Employee Last Name : "+e.getEmpLastName());
   System.out.println("Employee Age : "+e.getEmpBirthDay());
   System.out.println("Employee Cell Number : "+e.getEmpCellNo());
   System.out.println("Employee House Number : "+e.getEmpDetails().getHouseNo());
   System.out.println("Employee Street Name : "+e.getEmpDetails().getStreetName());
   System.out.println("Employee City Name : "+e.getEmpDetails().getCityName());
   System.out.println("Employee District Name : "+e.getEmpDetails().getDistrictName());
   System.out.println("Employee State Name : "+e.getEmpDetails().getStateName());
   System.out.println("Employee Country Name : "+e.getEmpDetails().getCountryName());
   System.out.println("Employee Pin No : "+e.getEmpDetails().getPinNo());
  }
  session.getTransaction().commit();
  session.flush();
  session.close();
 }
}

HibernateUtil.java

package com.lara.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
public class HibernateUtil
{
 public static Session getSession()
 {
  Configuration config = new Configuration();
  config.configure("com/lara/hibernateConfigurationFiles/hibernateForMySQL.cfg.xml");
  SessionFactory sf = config.buildSessionFactory();
  return sf.openSession();
 }
 public static Session getAnnotationSession()
 {
  AnnotationConfiguration anotConfig = new AnnotationConfiguration();
  anotConfig.configure("com/lara/hibernateConfigurationFiles/hibernateForMySQL.cfg.xml");
  SessionFactory sf = anotConfig.buildSessionFactory();
  return sf.openSession();
 }
}

No comments:

Post a Comment