Example: Hibernate Mapping

To facilitate migration of order entity data in the Footwear Orders sample MAPPER data report, MJ creates the FOOTWEAR_ORDER_LINEITEM table and FootwearOrderLineitem entity class. The Hibernate mapping XML that ties the persistent entity class and table together (via Object Relational Mapping) is shown below:

FootwearOrderLineitem.hbm.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-mapping SYSTEM
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping auto-import="true" default-lazy="false" default-access="property"
    default-cascade="none">

<typedef name="shoeType" class="com.arsi.mj.maprpt.entity.GenericEnumUserType">
	<param name="enumClass">com.arsi.mj.testapp.hibgen.enums.ShoeType</param>
	<param name="identifierMethod">asName</param>
	<param name="valueOfMethod">asValueOf</param>
</typedef>
<typedef name="shoeGender" class="com.arsi.mj.maprpt.entity.GenericEnumUserType">
	<param name="enumClass">com.arsi.mj.testapp.hibgen.enums.ShoeGender</param>
	<param name="identifierMethod">asName</param>
	<param name="valueOfMethod">asValueOf</param>
</typedef>

<class table="FOOTWEAR_ORDER_LINEITEM"
	name="com.arsi.mj.testapp.hibgen.model.FootwearOrderLineitem">
  <meta attribute="generated-class">com.arsi.mj.testapp.hibgen.model.FootwearOrderLineitem</meta>
  <meta attribute="scope-field">protected</meta>
  <meta attribute="class-description">Persistent class for Mapper report
    12D3954 (FootWear - Orders Information) after conversion to database
    table &lt;code&gt;FOOTWEAR_ORDER_LINEITEM&lt;/code&gt;.
  </meta>

<id unsaved-value="null" type="long" column="fw_order_li_id" name="id">
  <generator class="org.hibernate.id.enhanced.SequenceStyleGenerator">
	  <param name="sequence_name">SEQ_FOOTWEAR_ORDER_LINEITEM</param>
      <param name="initial_value">1000</param>
      <param name="increment_size">1</param>
  </generator>
</id>

<property type="integer" name="orderNumber">
  <meta attribute="field-description">Entity attribute for MAPPER report column OrdNo.</meta>
  <column not-null="true" length="5" name="order_no"/>
</property>

<property type="integer" name="quantity">
  <meta attribute="field-description">Entity attribute for MAPPER report column Qty.</meta>
  <column not-null="true" length="3" name="QTY"/>
</property>

<property type="shoeType" name="shoeType">
  <meta attribute="property-type">com.arsi.mj.testapp.hibgen.enums.ShoeType</meta>
  <meta attribute="field-description">Entity attribute for MAPPER report column Type.</meta>
  <column sql-type="varchar2(5)" not-null="true" length="5" name="SHOE_TYPE"/>
</property>

<property type="shoeGender" name="shoeGender">
  <meta attribute="property-type">com.arsi.mj.testapp.hibgen.enums.ShoeGender</meta>
  <meta attribute="field-description">Entity attribute for MAPPER report column Gender.</meta>
  <column sql-type="varchar2(1)" not-null="true" length="1" name="SHOE_GENDER"/>
</property>

<property type="string" name="shoeSize">
  <meta attribute="field-description">Entity attribute for MAPPER report column Siz.</meta>
  <column not-null="true" length="3" name="SHOE_SIZE"/>
</property>

<property type="string" name="shoeColor">
  <meta attribute="field-description">Entity attribute for MAPPER report column Color.</meta>
  <column not-null="false" length="40" name="SHOE_COLOR"/>
</property>

<property type="big_decimal" name="price">
  <meta attribute="field-description">Entity attribute for MAPPER report column Price.</meta>
  <column not-null="true" scale="2" precision="8" name="PRICE"/>
</property>

<property type="date" name="dateOrdered">
  <meta attribute="field-description">Entity attribute for MAPPER report column Date.</meta>
  <column not-null="true" length="8" name="ORDER_DATE"/>
</property>

<property type="string" name="timeOrdered">
  <meta attribute="field-description">Entity attribute for MAPPER report column Time.</meta>
  <column not-null="true" length="5" name="ORDER_TIME"/>
</property>

<property type="big_decimal" name="cost">
  <meta attribute="field-description">Entity attribute for MAPPER report column Cost.</meta>
  <column not-null="false" scale="2" precision="8" name="COST"/>
</property>

<properties name="audit">
  <property type="timestamp" name="createTimestamp">
    <meta attribute="field-description">Entity attribute containing time of row creation.</meta>
	<column not-null="true" name="create_timestamp"/>
  </property>
  <property type="timestamp" name="lastUpdateTimestamp">
    <meta attribute="field-description">Entity attribute containing time of last row update.</meta>
    <column not-null="true" name="DATE_OF_LAST_UPDATE"/>
  </property>
  <property type="java.lang.Long" name="createUserId">
    <meta attribute="field-description">Entity attribute containing user who created row.</meta>
    <column not-null="true" name="CREATED_BY_USER"/>
  </property>
  <property type="java.lang.Long" name="lastUpdateUserId">
    <meta attribute="field-description">Entity attribute containing user who last updated row.</meta>
    <column not-null="true" name="update_user_id"/>
  </property>
</properties>

<join optional="true" inverse="true" table="MJ_FOOTWEAR_ORDER_LINEITEM">
  <key column="fw_order_li_id"/>
  <component name="lineMetadata"
      class="com.arsi.mj.testapp.hibgen.model.MJFootwearOrderLineitem">
    <meta attribute="generated-class">com.arsi.mj.testapp.hibgen.model.MJFootwearOrderLineitem</meta>
    <property insert="false" update="false" column="fw_order_li_id" type="long" name="id"/>
    <property column="MJ_CABINET" type="int" name="cabinet"/>
    <property column="MJ_DRAWER" type="char" name="drawer"/>
    <property column="MJ_REPORT" type="int" name="report"/>
    <property column="MJ_LINETYPE" type="char" name="lineType"/>
  </component>
</join>

<join optional="true" inverse="true" table="FOOTWEAR_ORDER_ADDRESSEE">
  <key column="fw_order_li_id"/>
  <component name="footwearOrderAddressee"
      class="com.arsi.mj.testapp.hibgen.model.FootwearOrderAddressee">
    <meta attribute="generated-class">com.arsi.mj.testapp.hibgen.model.FootwearOrderAddressee</meta>
    <property insert="false" update="false" column="fw_order_li_id" type="long" name="id"/>
    <property column="ADDRESSEE" type="string" name="addressee"/>
    <property column="STREET" type="string" name="street"/>
    <property column="CITY_STATE_PROVINCE" type="string" name="cityState"/>
    <property column="POSTAL_CODE" type="string" name="postalCode"/>
    <property column="EMAIL" type="string" name="email"/>
    <property column="PHONE" type="string" name="phone"/>
  </component>
</join>

</class>

</hibernate-mapping>