Wednesday, June 12, 2013

21 - CRUD Operations



Writing code to Create, Read, Update and Delete entities in the database.

Insert record in table.
for(int i=0; i<10; i++){
                UserDetails user = new UserDetails();
                user.setUserName("User "+i);
                session.save(user);
}

Below property should be added in hibernate xml
<property name="hbm2ddl.auto">create</property>

Fetch data from table
UserDetails user = (UserDetails) session.get(UserDetails.class, 6);
System.out.println("UserName pulled up is: "+user.getUserName());

Below property should be added in hibernate xml
<property name="hbm2ddl.auto">update</property>

Delete record from table
UserDetails user = (UserDetails) session.get(UserDetails.class, 6);
session.delete(user);

Below property should be added in hibernate xml
<property name="hbm2ddl.auto">update</property>                

Update record in table
UserDetails user = (UserDetails) session.get(UserDetails.class, 7);
user.setUserName("Updated User");
session.update(user);

Below property should be added in hibernate xml
<property name="hbm2ddl.auto">update</property>                

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[]) {
           
            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();

            /* Insert records in Table */
            /*
            for(int i=0; i<10; i++){
                  UserDetails user = new UserDetails();
                  user.setUserName("User "+i);
                  session.save(user);
            }*/
           
            /* Fetch data from Table */
            UserDetails user = (UserDetails) session.get(UserDetails.class, 7);
           
            /* To delete a record from Table*/
            //session.delete(user);
           
            /* To update a record in Table*/
            user.setUserName("Updated User");
            session.update(user);
           
            session.getTransaction().commit();
            session.close();

            System.out.println("UserName pulled up is: "+user.getUserName());
      }
}

UserDetails.java
package org.yash.dto;

import java.util.ArrayList;
import java.util.Collection;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="USER_DETAILS")
public class UserDetails {
      /* @Id says "userId" is primary key */
      @Id @GeneratedValue (strategy=GenerationType.AUTO)
      private int userId;    
      private String userName;
      @OneToMany(cascade=CascadeType.PERSIST)
      private Collection<Vehicle> vehicle = new ArrayList<Vehicle>();
           
      public int getUserId() {
            return userId;
      }
      public void setUserId(int userId) {
            this.userId = userId;
      }
      public String getUserName() {
            return userName;
      }
      public void setUserName(String userName) {
            this.userName = userName;
      }
      public void setVehicle(Collection<Vehicle> vehicle) {
            this.vehicle = vehicle;
      }
      public Collection<Vehicle> getVehicle() {
            return vehicle;
      }
}

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">update</property> 
<!-- create / update -->
   
          <!-- Names the annotated entity class -->
            <mapping class="org.yash.dto.UserDetails"/>    
            <mapping class="org.yash.dto.Vehicle"/>  
            <mapping class="org.yash.dto.TwoWheeler"/>     
            <mapping class="org.yash.dto.FourWheeler"/>    
           
    </session-factory>

</hibernate-configuration>

1 comment:

  1. Happy to found this blog. Good Post!. It was so good to read and useful to improve my knowledge as updated one, keep blogging. Hibernate Training in Electronic City
    Java Training in Electronic City

    ReplyDelete