Tuesday, June 11, 2013

03 - Part-3-Saving-Objects-using-Hibernate-APIs

Using the Hibernate API

* Create a session factory
                It is one object per application.
                It creates session, how sessions you want in your application.
* Create a session from the session factory (to save / retrieve data from database).
* Use the session to save the model object.

hibernate.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>

        <property name="connection.driver_class">
org.postgresql.Driver
        </property>
        <property name="connection.url">
            jdbc:postgresql://localhost:5433/hibernatedb
  </property>
        <property name="connection.username">postgres</property>
        <property name="connection.password">admin</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">
            org.hibernate.dialect.PostgreSQLDialect
        </property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</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">create</property> 
   
          <!-- Names the annotated entity class -->
            <mapping class="org.yash.dto.UserDetails"/>    

    </session-factory>

</hibernate-configuration>

UserDetails.java
package org.yash.dto;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class UserDetails {
      @Id
      private int userId;
      private String userName;
      public void setUserId(int userId) {
            this.userId = userId;
      }
      public int getUserId() {
            return userId;
      }
      public void setUserName(String userName) {
            this.userName = userName;
      }
      public String getUserName() {
            return userName;
      }
}

HibernateTest.java
package org.yash.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.yash.dto.UserDetails;

public class HibernateTest {

      public static void main(String args[]){
            UserDetails user = new UserDetails();
            user.setUserId(1);
            user.setUserName("First User");
           
            SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
           
            Session session = sessionFactory.openSession();
            /* It is used to save all the objects and to define single unit of work */
            session.beginTransaction();
           
            session.save(user);
            session.getTransaction().commit();
      }
}

No comments:

Post a Comment