Saturday, January 12, 2013

Basic Hibernate Application with hibernate mapping hbm.xml file


Hibernate is Object Relational mapping (ORM) tool which is open source and distributed under the GNU Lesser General Public License.
It is mainly used to map the class object with the relational database.It also Provides data query and data retrieval  functionality.
In hibernate ,database schema is maintained by either xml file or using Annotations.

Project View After Completion

Hibernate Environment Setting

Right click over project on Project Explorer and goto properties->Java Build Path->Libraries
Add Required Hibernate jars, JRE system Library, Apache Tomcat server by click on Add Library and Add External Jar ojdbc14.jar by click on Add External Jars.
For Details Read How to set Hibernate Environment



hibernate.cfg.xml
This is a file that contains information about Oracle database(or any other database you want to use) Driver and connection information and mapping class information. 
We can also use create property in place of update.
create is a property which drops the table if it already in database and creates new one but update makes the changes in the table if its already there and if table is not there then creates a new one.


 <?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>  
   <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>  
   <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>  
   <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>  
   <property name="hibernate.connection.username">hr</property>  
   <property name="hibernate.connection.password">hr</property>  
   <property name="hibernate.show_sql">true</property>  
   <property name="hibernate.hbm2ddl.auto">update</property>  
   <!-- <mapping class="blog.webideaworld.in.Student"/> -->  
   <mapping resource="Student.hbm.xml"/>  
  </session-factory>  
 </hibernate-configuration>  

Student.java
This is a POJO class and it is working as Persistent class for Hibernate and the same java class we are using to store object of Student class using Hibernate Framework.


 package blog.webideaworld.in;  
 import org.hibernate.Session;  
 import org.hibernate.SessionFactory;  
 import org.hibernate.cfg.Configuration;  
 public class Student {  
      private int id;  
   private String name;  
   private int rollno;  
 public int getId() {  
      return id;  
 }  
 public void setId(int id) {  
      this.id = id;  
 }  
 public String getName() {  
      return name;  
 }  
 public void setName(String name) {  
      this.name = name;  
 }  
 public int getRollno() {  
      return rollno;  
 }  
 public void setRollno(int rollno) {  
      this.rollno = rollno;  
 }  
 public static void main(String args[]){  
           Student st =new Student();  
           st.setId(1);  
           st.setName("jack");  
        st.setRollno(44);  
        SessionFactory sessionFactory     =new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();  
        Session session=sessionFactory.openSession();  
        session.beginTransaction();  
        session.save(st);  
        session.getTransaction().commit();  
      }  
 }  

Student.hbm.xml 
In Place of Annotations we are using this hbm.xml file here which is called hibernate mapping file
 <?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="blog.webideaworld.in.Student" table="Student">  
    <id name="id">  
      <generator class="assigned"/>  
    </id>  
    <property name="name" column="Name"/>  
    <property name="rollno" column="Rollno"/>  
   </class>  
 </hibernate-mapping>  
To Generate Getters and Setters Right Click inside Student.java then select Source -> Generate Getters and Setters
To Run this Project Right Click inside Student.java, select Run As -> Java Application

other Generator classes:

increment class automatically sets value for id column.
 <id name="id">  
      <generator class="increment"/>  
    </id>  

sequence class using a sequence for id column.
  <id name="id" column="Id">  
      <generator class="sequence">  
        <param name="sequence">sequence_name</param>  
      </generator>  
 </id>  

Create a Sequence Example:
 CREATE SEQUENCE SEQUENCE_NAME  
 START WITH 101  
 INCREMENT BY 1  
 MAXVALUE 999  
 NOCYCLE  
 NOCACHE  
  
 Download Code Link 1
 Download Code Link 2

Output:




No comments:

Popular Posts