A component is a contained object that is persisted as a value type, not an entity reference.

Example:

public class person{
    private Name name;
    public Name getName(){ 
        return name;
    }
    public void setName(Name name){
        this.name=name;
    }
     .....
}

public class Name {
    char initial;
    String first;
    String last;

    public char getInitial() {
        return initial;
    }

    public void setInitial(char initial)
    {
        this.initial=initial;
    }.......// first,last
}

Now 'Name' may be persited to the component of 'person'

in hbm:

<class name="eg.Person" table="person">
    <id name="Key" column="pid" type="string">
        <generator class="uuid"/>
    </id>
    <property name="birthday" type="date"/>
    <component name="Name" class="eg.Name"> <!-- class attribute optional -->
        <property name="initial"/>
        <property name="first"/>
        <property name="last"/>
    </component>
</class>

The person table would have the columns pid, birthday, initial, first and last.