Panel | ||
---|---|---|
| ||
Each data object (DO) represents a record in the database, that means that for every table in the database, there is a data object class. CRM.COM software uses Hibernate, a data persistence framework used to retrieve and persist data to the database.
What does this section cover?
|
In the following example, we will create and map a data object class for the table BANKBRANCHES.
Expand | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||
|
...
Creating the Data Object Classes
...
All data objects should be placed under com.crm.dataobject.* named packages, extend either com.crm.dataobject.CRMDO or one of its subclasses and follow this naming convention: CRMDO<classname>.java.
Expand | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
|
...
Note that id, name, altCode, createdByUser, updatedByUser, createdByUnit, updatedByUnit, createdDate, updatedDate, isDeleted and recVersion properties are defined in com.crm.dataobject.CRMDO class.
Mapping the Data Object Classes
...
Hibernate is used by CRM.COM to map a defined class to a database table and its properties to the table's fields.
Creating Hibernate Mapping Files
...
Hibernate Mapping files should always have the following format: <classname>.hbm.xml
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping default-access="field"> <class lazy="true" name="com.crm.dataobject.accounts.CRMDOBankBranch" table="BANKBRANCHES" > <meta attribute="class-description" inherit="false"> @hibernate.class table="BANKBRANCHES" </meta> <meta attribute="extends" inherit="false">com.crm.dataobject.CRMDO</meta> <cache usage="read-write" /> <id access="property" name="id" type="java.lang.String" column="BANKBRANCHID" > <meta attribute="field-description"> @hibernate.id generator-class="assigned" type="java.lang.String" column="BANKBRANCHID" </meta> <generator class="assigned" /> </id> <version name="recVersion" type="java.lang.Integer" column="RECVERSION" access="property" unsaved-value="undefined" > <meta attribute="field-description"> @hibernate.property column="RECVERSION" length="10" </meta> </version> <many-to-one name="createdByUser" class="com.crm.dataobject.users.CRMDOUser" not-null="true" > <meta attribute="field-description"> @hibernate.many-to-one not-null="true" @hibernate.column name="BANKBRANCHCREATEDBYUSERID" </meta> <column name="BANKBRANCHCREATEDBYUSERID" /> </many-to-one> <many-to-one name="updatedByUser" class="com.crm.dataobject.users.CRMDOUser" not-null="true" > <meta attribute="field-description"> @hibernate.many-to-one not-null="true" @hibernate.column name="BANKBRANCHUPDATEDBYUSERID" </meta> <column name="BANKBRANCHUPDATEDBYUSERID" /> </many-to-one> <many-to-one name="createdByUnit" class="com.crm.dataobject.networkmanagement.CRMDOUnit" not-null="true" > <meta attribute="field-description"> @hibernate.many-to-one not-null="true" @hibernate.column name="BANKBRANCHCREATEDBYOUUID" </meta> <column name="BANKBRANCHCREATEDBYOUUID" /> </many-to-one> <many-to-one name="updatedByUnit" class="com.crm.dataobject.networkmanagement.CRMDOUnit" not-null="true" > <meta attribute="field-description"> @hibernate.many-to-one not-null="true" @hibernate.column name="BANKBRANCHUPDATEDBYOUUID" </meta> <column name="BANKBRANCHUPDATEDBYOUUID" /> </many-to-one> <property name="createdDate" type="java.sql.Timestamp" column="BANKBRANCHCREATEDDATE" length="23" > <meta attribute="field-description"> @hibernate.property column="BANKBRANCHCREATEDDATE" length="23" </meta> </property> <property name="updatedDate" type="java.sql.Timestamp" column="BANKBRANCHUPDATEDDATE" length="23" > <meta attribute="field-description"> @hibernate.property column="BANKBRANCHUPDATEDDATE" length="23" </meta> </property> <property name="isDeleted" type="java.lang.Integer" column="BANKBRANCHDELETED" length="10" > <meta attribute="field-description"> @hibernate.property column="BANKBRANCHDELETED" length="10" </meta> </property> <many-to-one name="bank" class="com.crm.dataobject.accounts.CRMDOBank" not-null="true" > <meta attribute="field-description"> @hibernate.many-to-one not-null="true" @hibernate.column name="BANKID" </meta> <column name="BANKID" /> </many-to-one> <property name="name" type="java.lang.String" column="BANKBRANCHNAME" length="256" > <meta attribute="field-description"> @hibernate.property column="BANKBRANCHNAME" length="256" </meta> </property> <property name="altCode" type="java.lang.String" column="BANKBRANCHALTCODE" length="32" > <meta attribute="field-description"> @hibernate.property column="BANKBRANCHALTCODE" length="32" </meta> </property> <property name="description" type="java.lang.String" column="BANKBRANCHDESC" length="32" > <meta attribute="field-description"> @hibernate.property column="BANKBRANCHDESC" length="32" </meta> </property> <set name="paymentPreferences" lazy="true" inverse="true" cascade="none" > <meta attribute="field-description"> @hibernate.set lazy="true" inverse="true" cascade="none" @hibernate.collection-key column="BANKBRANCHID" @hibernate.collection-one-to-many class="com.crm.dataobject.accounts.CRMDOPaymentPreference" </meta> <key><column name="BANKBRANCHID" /></key> <one-to-many class="com.crm.dataobject.accounts.CRMDOPaymentPreference" /> </set> </class> </hibernate-mapping> |
...
Hibernate Configuration File
...
Hibernate Configuration file (hibernate.cfg.xml) is used for defining all the hibernate mapping files. During the application's initialization process, hibernate reads this configuration file and maps the classes defined, to the database tables.
...