The <component> element maps properties of a child object to columns of the table of a parent class. Components can, in turn, declare their own properties, components or collections
The <dynamic-component> element allows a Map  to be mapped as a component, where the property names refer to keys of the map
example of dynamic-component:
Code:
<dynamic-component name="userAttributes">
    <property name="foo" column="FOO" type="string"/>
    <property name="bar" column="BAR" type="integer"/>
    <many-to-one name="baz" class="Baz" column="BAZ_ID"/>
</dynamic-component>
example of component
Code:
<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>