Thursday 17 March 2016

item types in hybris

1. Items.xml is located in resources directory of any extension.

2. They are prefixed by the name of the extension.
Eg: cuppy-items.xml

3. Item Types are foundation for the Hybris Type System. 

4.  Item Types are responsible for creating new tables or updating the existing tables. The table structure is configured over this type with the help of attributes. Each attribute in Item type definition will represent a column in the table
To define an items.XML file there must be an xsd file which has some rules. In items .XML file there are mainly six tags which has some specific usage .The order in which the types are declared is very important. The order in which types are defined must conform to below.
<atomic types>
<collection types>
<enum types>
<map types>
<relations type>
 <item types>

GenericItem  is the default parent of each item type.

                              <atomic types>

Atomic types are basic types in Hybris which will have Java number and String object types, such as java.lang.Integer or java.lang.String.

Eg: <atomictype class=“java.lang.String” extends=“java.lang.Object” autocreate=“true” generate=“false”/>

                          <collection types>

Collection types are the types which represent group of element types like a group of products or a group of customers.

Eg: <collectiontype code=”LanguageSet” elementtype=”Language” autocreate=”true” generate=”true” type=”set”/>


                                    <enum types>

Enumeration types represent the enumerations in Java. These are used for preparing particular set of values. For e.g. : Days in a week or months in a year.

Eg:<enumtype code=“deliverystatus” autocreate=“true” generate=“true”>
<value code=“DELIVERED”/> 
<value code=“NOT DELIVERED”/>
</enumtype>


                                   <map types>

Map Types used to store a key value pair in Hybris. Each key will represent its own value. For e.g. :  The localized fields require separate value for each language.

Eg:<maptype code="localized:java.lang.String“ argumenttype="Language“ returntype="java.lang.String“ autocreate="true“ generate="false"/>


                                     <relations type>

Relation types create the links between tables. For e.g.: Country and regions are linked together, where the link is created with the help of relation types.

Eg:<relation code="Country2RegionRelation" generate="true" localized="false" autocreate="true"> <sourceElement type="Country" qualifier="country" cardinality="one"> 
<modifiers read="true" write="true" search="true" optional="false" unique="true"/> 
</sourceElement> <targetElement type="Region" qualifier="regions" cardinality="many"> 
<modifiers read="true" write="true" search="true" partof="true"/> 
</targetElement> 
</relation>

                                      <item types>

Itemtypes are responsible for creating new tables or updating the existing tables. The table structure is configured over this type with the help of attributes. Each attribute in Item type definition will represent a column in the table

Item type = Table + Java class

Eg: <itemtype code="Customer“ extends="User"  jaloclass="de.hybris.platform.jalo.user.Customer"   autocreate="true“ generate="true"> 
<attributes> 
<attribute autocreate="true" qualifier="customerID" type="java.lang.String"> <modifiers read="true" write="true" search="true" optional="true"/> <persistence type="property"/> 
</attribute> 
</attributes>
 </itemtype>


Simple word to word meaning of different attributes is as follows:

code=”MyProduct” ----- means type name which is similar to our java class name declaration

autocreate=”true”--- true for new data base entry. ----- false for existed database entity default value is true.. 

generate=”true”-----It denotes generating model class with its code name , here eg: MyProductModel.java

qualifier=” old price” ------ column name in table 

persistence type=”property” ---- it denotes values will be stored in database.

persistence type=”dynamic”---- it denotes values will not be stored in DB.

modifiers    read=”true ------  getter methods are generated in Model Class for particular qualifier.

write= ”true” ----- setter methods are generated in Model Class for particular qualifier .
   


5 comments:

  1. How do I modify a Relation Type file in Hybris? Can this be done in the Hybris Management Console?

    ReplyDelete
  2. Thanks for the post. Please tell me what is the meaning of localized="false"

    ReplyDelete
  3. Hi , What will happen if we didnt give read and write ?

    ReplyDelete
  4. What happend.if autocreate =true and generated =false

    ReplyDelete