Give an example for one to many relationship ?

#1
Example for One to Many Relationship :

1. Code of Hibernate Configuration File : File Name - hibernate.cfg.xml
Code:
 <?xml version="1.0" encoding="utf-8" ?> 
  <!DOCTYPE hibernate-configuration (View Source for full doctype...)> 
- <hibernate-configuration>
- <session-factory>
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
  <property name="hibernate.connection.url">jdbc:mysql://localhost/hibernatetutorial</property> 
  <property name="hibernate.connection.username">root</property> 
  <property name="hibernate.connection.password" /> 
  <property name="hibernate.connection.pool_size">10</property> 
  <property name="show_sql">true</property> 
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
  <property name="hibernate.hbm2ddl.auto">update</property> 
- <!--  Mapping files  --> 

        <mapping resource="Event.hbm.xml"/>
        <mapping resource="Speaker.hbm.xml"/>
        
    </session-factory>

</hibernate-configuration>
2. Code of Hibernate Mapping Files :

File Name - Event.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>
    <class name="Event" table="events">
        <id name="id" column="uid" type="long" unsaved-value="null">
            <generator class="increment"/>
        </id>
        <property name="name" type="string" length="100"/>
        <property name="startDate" column="start_date"
                  type="date"/>
        <property name="duration" type="integer"/>
        <many-to-one name="location" column="location_id" class="Location"/>
        <set name="speakers" cascade="all">
            <key column="event_id"/>
            <one-to-many class="Speaker"/>
        </set>
        
    </class>
</hibernate-mapping>
File Name - Speaker.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>
    <class name="Speaker" table="speakers">
        <id name="id" column="uid" type="long">
            <generator class="increment"/>
        </id>
        <property name="firstName" type="string" length="20"/>
        <property name="lastName" type="string" length="20"/>
    </class>
</hibernate-mapping>
3. Code of POJO Classes :

File Name - Event.java
Code:
import java.util.Date;
import java.util.Set;

public class Event {

  private Long id;
  private String name;
  private Date startDate;
  private int duration;
  private Set speakers;
    

  public void setId(Long id) {
    this.id = id;
  }
  
  public Long getId() {
    return id;
  }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public int getDuration() {
        return duration;
    }

    public void setDuration(int duration) {
        this.duration = duration;
    }

   public void setSpeakers(Set speakers) {
    this.speakers = speakers;
  }
  
  public Set getSpeakers() {
    return speakers;
  }
}
File Name - Speaker.java
Code:
public class Speaker {

    private Long id;
    private String firstName;
    private String lastName;

    public Speaker() {
    }

    public Speaker(String firstName, String lastName) {
        setFirstName(firstName);
        setLastName(lastName);
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}
4. Code of our Main Class : File Name - OneToMany.java
Code:
import java.util.*;

import org.hibernate.*;
import org.hibernate.criterion.*;

public class OneToMany {
  
  
  public static void main(String[] args) {
    HibernateUtil.setup("create table EVENTS ( uid int, name VARCHAR, start_Date date, duration int, location_id int);");

    HibernateUtil.setup("create table speakers ( uid int, event_id int, firstName VARCHAR, lastName VARCHAR);");
    
    // hibernate code start
    Session session = HibernateUtil.currentSession();
    Transaction tx = session.beginTransaction();


        Event event = new Event();
        event.setName("One-to-many test");
        event.setSpeakers(new HashSet());
        event.getSpeakers().add(new Speaker("John", "Smith"));
        event.getSpeakers().add(new Speaker("Dave", "Smith"));
        event.getSpeakers().add(new Speaker("Joan", "Smith"));

        session.saveOrUpdate(event);


        tx.commit();
    HibernateUtil.closeSession();

    HibernateUtil.sessionFactory.close();

        HibernateUtil.checkData("select * from speakers");
        HibernateUtil.checkData("select uid, name from events");        
    // hibernate code end
  }
  
}
 
#2
Hi Rao,
Can u provide small expolanation about event.hbm.xml
about set tag filelds how they relate.....
<many-to-one ....fileds how they linked ....
i feel little bit confusio!!!!!!!!!!!
 
Top