1.2. Part 2 - Mapping associations

So far we have mapped a single persistent entity class to a table in isolation. Let us expand on that a bit and add some class associations. We will add people to the application and store a list of events in which they participate.

1.2.1. Mapping the Person class

The first cut of the Person class looks like this:
package org.hibernate.tutorial.domain;

public class Person {

    private Long id;
    private int age;
    private String firstname;
    private String lastname;

    public Person() {}

    // Accessor methods for all properties, private setter for 'id'

Save this to a file named src/main/java/org/hibernate/tutorial/domain/Person.java
Next, create the new mapping file as src/main/resources/org/hibernate/tutorial/domain/Person.hbm.xml
<hibernate-mapping package="org.hibernate.tutorial.domain">

    <class name="Person" table="PERSON">
        <id name="id" column="PERSON_ID">
            <generator class="native"/>
        <property name="age"/>
        <property name="firstname"/>
        <property name="lastname"/>

Finally, add the new mapping to Hibernate's configuration immediately after the existing mapping for Event.hbm.xml:
<mapping resource="events/Event.hbm.xml"/>
<mapping resource="events/Person.hbm.xml"/>
Create an association between these two entities. Persons can participate in events, and events have participants. The design questions you have to deal with are: directionality, multiplicity, and collection behavior.