Inversed Mapping Cascade Loading : Inversed Mapping « Hibernate « Java






Inversed Mapping Cascade Loading

/////////////////////////////////////////////////////////////////////////


import java.util.*;

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

public class SimpleRetrieveTest {
  
  
  public static void main(String[] args) {
    HibernateUtil.setup("create table i_EVENTS ( uid int, name VARCHAR, start_Date date, duration int, location_id int);");
    HibernateUtil.setup("create table i_speakers ( uid int, firstName VARCHAR, lastName VARCHAR, event int);");
    
    // hibernate code start
    Session session = HibernateUtil.currentSession();
    Transaction tx = session.beginTransaction();


        EventInverse event = new EventInverse();
        event.setName("Inverse test");
        event.setSpeakers(new HashSet());
        event.getSpeakers().add(new SpeakerInverse("John", "Smith", event));
        event.getSpeakers().add(new SpeakerInverse("Dave", "Smith", event));
        event.getSpeakers().add(new SpeakerInverse("Joan", "Smith", event));


        session.save(event);

        event = (EventInverse) session.load(EventInverse.class, event.getId());
        Set speakers = event.getSpeakers();

        for (Iterator i = speakers.iterator(); i.hasNext();) {
            SpeakerInverse speaker = (SpeakerInverse) i.next();
            System.out.println("Event Name:"+speaker.getEvent().getName());
            System.out.println("Speaker First Name:"+speaker.getFirstName());
            System.out.println("Speaker Last Name:"+speaker.getLastName());
        }


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

    HibernateUtil.sessionFactory.close();

        HibernateUtil.checkData("select * from i_speakers");
        HibernateUtil.checkData("select uid, name from i_events");        
    // hibernate code end
  }
  
}


/////////////////////////////////////////////////////////////////////////

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

public class EventInverse {

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

  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 LocationInverse getLocation() {
        return location;
    }

    public void setLocation(LocationInverse location) {
        this.location = location;
    }

  public void setSpeakers(Set speakers) {
    this.speakers = speakers;
  }
  
  public Set getSpeakers() {
    return speakers;
  }

    public Set getAttendees() {
        return attendees;
    }

    public void setAttendees(Set attendees) {
        this.attendees = attendees;
    }

}



/////////////////////////////////////////////////////////////////////////

<?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="EventInverse" table="i_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="LocationInverse"/>
        <set name="speakers" cascade="all" inverse="true">
            <key column="event_id"/>
            <one-to-many class="SpeakerInverse"/>
        </set>
    </class>
</hibernate-mapping>



/////////////////////////////////////////////////////////////////////////


<?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="SpeakerInverse" table="i_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"/>
        <many-to-one name="event" class="EventInverse"/>
    </class>
</hibernate-mapping>


/////////////////////////////////////////////////////////////////////////


public class SpeakerInverse {

    private Long id;
    private String firstName;
    private String lastName;
    private EventInverse event;

    public SpeakerInverse() {
    }

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

    public SpeakerInverse(String firstName, String lastName, EventInverse event) {
        this(firstName, lastName);
        setEvent(event);
    }

    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;
    }

    public EventInverse getEvent() {
        return this.event;
    }

    public void setEvent(EventInverse event) {
        this.event = event;
    }

}

/////////////////////////////////////////////////////////////////////////
<?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>

        <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:data/tutorial</property>
        <property name="connection.username">sa</property>
        <property name="connection.password"></property>

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

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

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <mapping resource="EventInverse.hbm.xml"/>
        <mapping resource="SpeakerInverse.hbm.xml"/>
        <mapping resource="LocationInverse.hbm.xml"/>
    </session-factory>

</hibernate-configuration>

           
       








HibernateInversedMappingCascadingLoading.zip( 4,586 k)

Related examples in the same category

1.Inversed Mapping Cascade Save