About Me

My photo
Talk to me... you will know

Monday, August 29, 2011

Hibernate



The required jar files are
  • asm.jar
  • commons-collections-2.1.1.jar
  • commons-logging-1.0.4.jar
  • cglib-2.1.3.jar
  • dom4j-1.6.1.jar
  • ehcache-1.6.0-beta1.jar
  • hibernate3.jar
  • jta.jar

Put all the xml files in the source folder outside the created package.

Mention the class and default values properly

in the configuration to create session factory add the xml in case it is not detected directly.


SessionFactory sf=new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();


 Also checkout the following example


Happy hibernating:)
//DataEntry.java
/*****************************************************************************
 * In this program we are trying to applying the one-to-many relationship in
 * both the ways.
 *     Concept:
 *     Trinaers can take multiple technologies
 *     A technology can be taken by multiple Trainers
 *
 * Through this application you can check how the logic works for one-to-many
 * in both ways but its not suitable for actual implementation because this
 * application creats two tables only - TRAINER and TECHNOLOGY.
 *
 *  After running this application you will found that there is problem with
 *  inserting of new record next time.
 *  To resolve this problem you can convert this application to many-to-many.
 *
 */


package ajo.hib;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;


import org.hibernate.*;
import org.hibernate.cfg.Configuration;


public class DataEntry {
    public static void main(String[] args)throws IOException {
        int i;
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
         System.out.println("2.insert 3.delete 1.update\n Enter your choice: ");
        i=Integer.parseInt(br.readLine());
        Employee e= new Employee(); e.setEmpId("E102");
       
          EmployeeDAO ed= new EmployeeDAO();
       
        switch(i)
        {
      
        case 1:
          //for update
          ed.update(e);
          break;
       
        case 2:
        // for insert operation
        //Employee e = new Employee();
        e.setEmpId("E102");
        e.setEmpName("Mahesh");


        //EmployeeDAO ed = new EmployeeDAO();


        ed.insert(e);
        break;
        case 3:
            //for delete
         e.setEmpId("E102");
       
          EmployeeDAO eDAO= new EmployeeDAO();
       
          eDAO.delete(e);
         break;
         default:
             System.out.println("Invalid");
             break;
        }
    }
}

//EmployeeDAO.java
package ajo.hib;


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


public class EmployeeDAO implements IEmployeeDAO {


    public void insert(Employee e)
    {
        SessionFactory sf=new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
        Session ses= sf.openSession();
        Transaction tr= ses.beginTransaction();
      
      
        ses.save(e);
        //e.setEmpName("rajeev"); // update statement gets fired for this
        tr.commit();


    }
  
    public void update(Employee e)
    {
        SessionFactory sf=new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
        Session ses= sf.openSession();
        Transaction tr= ses.beginTransaction();
      
        e=(Employee) ses.load("ajo.hib.Employee", e.getEmpId());
      
        e.setEmpName("Ajo");
      
        System.out.println(e);
      
        ses.save(e);
        //ses.refresh(e);
        tr.commit();
        System.out.println(e);
    }
    public void delete(Employee e)
    {
        SessionFactory sf=new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
        Session ses= sf.openSession();
        Transaction tr= ses.beginTransaction();
      
        e=(Employee) ses.load("ajo.hib.Employee", e.getEmpId());
        System.out.println(e);
        ses.delete(e);
        tr.commit();
        System.out.println(e);
    }
  
}
//IEmployeeDAO.java

package ajo.hib;


public interface IEmployeeDAO {


    public void update(Employee e);
    public void insert(Employee e);
    public void delete(Employee e);
}

//Employee.java

package ajo.hib;


public class Employee
{
    String empName;
    String empId;
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }
    public String getEmpId() {
        return empId;
    }
    public void setEmpId(String empId) {
        this.empId = empId;
    }
  
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return " Employee ID : "+empId + " Name : "+empName;
    }
}

//employee.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//hibernate/hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="ajo.hib.Employee" table="empl">
        <id name="empId" column="EMPLOYEE_ID">
            <generator class="assigned"/>
        </id>
        <property name="empName"/>
    </class>
</hibernate-mapping>

//hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//hibernate/hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">


<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">admin1234</property>
        <property name="hibernate.connection.pool_size">1</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <mapping resource="employee.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

3 comments:

  1. Dude whether we can use Eclipse/NetBeans IDE to develop this simple program or some other software have to be use for implementing.

    ReplyDelete