Saturday, January 11, 2014

Hibernate One to Many example Using Annotations

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="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.hbm2ddl.auto" >update</property>
    <property name="hibernate.show_sql">true</property>
    <mapping class="org.jl.vo.StudentTo"/>  
    <mapping class="org.jl.vo.HobbyTo"/>
   
  </session-factory>
</hibernate-configuration>


2)
HobbyTo.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package org.jl.vo;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 *
 * @author Rishitha
 */
@Entity
@Table(name="jlhobbies")
public class HobbyTo {
    @Id
    private int hobbyId;
    private String hobbyName;
    private String hobbyCategory;
    @ManyToOne
    @JoinColumn(name = "sid")
    private StudentTo student;

  
   
    public HobbyTo(){}

    public int getHobbyId() {
        return hobbyId;
    }

    public void setHobbyId(int hobbyId) {
        this.hobbyId = hobbyId;
    }

    public String getHobbyName() {
        return hobbyName;
    }

    public void setHobbyName(String hobbyName) {
        this.hobbyName = hobbyName;
    }

    public String getHobbyCategory() {
        return hobbyCategory;
    }

    public void setHobbyCategory(String hobbyCategory) {
        this.hobbyCategory = hobbyCategory;
    }
   
   
     public StudentTo getStudent() {
        return student;
    }

    public void setStudent(StudentTo student) {
        this.student = student;
    }
   
   
   
}



3)
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package org.jl.vo;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

/**
 *
 * @author Rishitha
 */
@Entity
@Table(name="jlstudents")
public class StudentTo {
    @Id
    private int sid;
    @Column(name="jlsfname")
    private String sfname;
    @Column(name="jlslname")
    private String slname;
    @Temporal(TemporalType.DATE)

    private Date   sbdate;

  
   
   
    @OneToMany(mappedBy="student",cascade = {javax.persistence.CascadeType.ALL}, orphanRemoval=true)
  
    private Set<HobbyTo> hobbies = new HashSet();
   
   
   
    public StudentTo(){
       
    }

    public Date getSbdate() {
        return sbdate;
    }

    public void setSbdate(Date sbdate) {
        this.sbdate = sbdate;
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSfname() {
        return sfname;
    }

    public void setSfname(String sfname) {
        this.sfname = sfname;
    }

    public String getSlname() {
        return slname;
    }

    public void setSlname(String slname) {
        this.slname = slname;
    }

    public Set<HobbyTo> getHobbies() {
        return hobbies;
    }

    public void setHobbies(Set<HobbyTo> hobbies) {
        this.hobbies = hobbies;
    }
   
   
  
   
}


4)
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
//drop table jlstudents;
//drop table jlcourses;
//
//select * from jlstudents;
//select * from jlhobbies;
//
//drop table jlhobbies;
//drop table jlstudents;
package hibex;

import java.util.HashSet;
import java.util.Set;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.jl.vo.HobbyTo;
import org.jl.vo.StudentTo;

/**
 *
 * @author Rishitha
 */
public class OneToManyMappingInsertion3 {
    public static void main(String args[]){
      
         SessionFactory sf = new Configuration().configure().buildSessionFactory();
      
        //Session is very important
        //and using session we do every thing in hibernate.
        //Eg We can save,update,delete,load,get etc.........
        Session ses = sf.openSession();
        //Now let us see how to add the hobbies to student1
        Transaction tx = null;
        try{
        tx = ses.beginTransaction();
        StudentTo st = (StudentTo)ses.get(StudentTo.class, 1);
      
        HobbyTo hob1 = new HobbyTo();
        hob1.setHobbyId(1);
        hob1.setHobbyName("Gardening");
        hob1.setHobbyCategory("Refreshment");
        hob1.setStudent(st);
        Set hobbies = new HashSet();
        hobbies.add(hob1);
        System.out.println(st.getHobbies());
        System.out.println("Hello 1");
        st.getHobbies().addAll(hobbies);
        System.out.println("Hello 2");
        ses.save(st);
        //ses.save(hob1);
        tx.commit();
        }catch(Exception e ){
            tx.rollback();
            e.printStackTrace();
        }
      
      
      
    }
}






















No comments:

Post a Comment