Program guide > Access data with client applications > Cache objects and their relationships (EntityManager API) > Define an entity schema



emd.xsd file

Use the entity metadata XML schema definition to create a descriptor XML file and define an entity schema for WebSphere eXtreme Scale.

See the Entity metadata descriptor XML file for the descriptions of each element and attribute of the emd.xsd file.


emd.xsd file

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:emd="http://ibm.com/ws/projector/config/emd"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://ibm.com/ws/projector/config/emd"
    elementFormDefault="qualified" attributeFormDefault="unqualified"
    version="1.0">

   
<!-- **************************************************** -->
   
<xsd:element name="entity-mappings">
       
<xsd:complexType>
           
<xsd:sequence>
               
<xsd:element name="description" type="xsd:string" minOccurs="0" />
               
<xsd:element name="entity" type="emd:entity" minOccurs="1" maxOccurs="unbounded" />
           
</xsd:sequence>
       
</xsd:complexType>
       
<xsd:unique name="uniqueEntityClassName">
           
<xsd:selector xpath="emd:entity" />
           
<xsd:field xpath="@class-name" />
       
</xsd:unique>
   
</xsd:element>

   
<!-- **************************************************** -->
   
<xsd:complexType name="entity">
       
<xsd:sequence>
           
<xsd:element name="description" type="xsd:string" minOccurs="0" />
           
<xsd:element name="id-class" type="emd:id-class" minOccurs="0" />
           
<xsd:element name="attributes" type="emd:attributes" minOccurs="0" />
           
<xsd:element name="entity-listeners" type="emd:entity-listeners" minOccurs="0" />
           
<xsd:element name="pre-persist" type="emd:pre-persist" minOccurs="0" />
           
<xsd:element name="post-persist" type="emd:post-persist" minOccurs="0" />
           
<xsd:element name="pre-remove" type="emd:pre-remove" minOccurs="0" />
           
<xsd:element name="post-remove" type="emd:post-remove" minOccurs="0" />
           
<xsd:element name="pre-invalidate" type="emd:pre-invalidate" minOccurs="0" />
           
<xsd:element name="post-invalidate" type="emd:post-invalidate" minOccurs="0" />
           
<xsd:element name="pre-update" type="emd:pre-update" minOccurs="0" />
           
<xsd:element name="post-update" type="emd:post-update" minOccurs="0" />
           
<xsd:element name="post-load" type="emd:post-load" minOccurs="0" />
       
</xsd:sequence>
       
<xsd:attribute name="name" type="xsd:string" use="required" />
       
<xsd:attribute name="class-name" type="xsd:string" use="required" />
       
<xsd:attribute name="access" type="emd:access-type" />
       
<xsd:attribute name="schemaRoot" type="xsd:boolean" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="attributes">
       
<xsd:sequence>
           
<xsd:choice>
               
<xsd:element name="id" type="emd:id" minOccurs="0" maxOccurs="unbounded" />
           
</xsd:choice>
           
<xsd:element name="basic" type="emd:basic" minOccurs="0" maxOccurs="unbounded" />
           
<xsd:element name="version" type="emd:version" minOccurs="0" maxOccurs="unbounded"/>
           
<xsd:element name="many-to-one" type="emd:many-to-one" minOccurs="0" maxOccurs="unbounded" />
           
<xsd:element name="one-to-many" type="emd:one-to-many" minOccurs="0" maxOccurs="unbounded" />
           
<xsd:element name="one-to-one" type="emd:one-to-one" minOccurs="0" maxOccurs="unbounded" />
           
<xsd:element name="many-to-many" type="emd:many-to-many" minOccurs="0" maxOccurs="unbounded" />
           
<xsd:element name="transient" type="emd:transient" minOccurs="0" maxOccurs="unbounded" />
       
</xsd:sequence>
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:simpleType name="access-type">
       
<xsd:restriction base="xsd:token">
           
<xsd:enumeration value="PROPERTY" />
           
<xsd:enumeration value="FIELD" />
       
</xsd:restriction>
   
</xsd:simpleType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="id-class">
       
<xsd:attribute name="class-name" type="xsd:string" use="required" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="id">
       
<xsd:attribute name="name" type="xsd:string" use="required" />
       
<xsd:attribute name="type" type="xsd:string" />
       
<xsd:attribute name="alias" type="xsd:string" use="optional" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="transient">
       
<xsd:attribute name="name" type="xsd:string" use="required" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="basic">
       
<xsd:attribute name="name" type="xsd:string" use="required" />
       
<xsd:attribute name="alias" type="xsd:string" />
       
<xsd:attribute name="type" type="xsd:string" />
       
<xsd:attribute name="fetch" type="emd:fetch-type" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:simpleType name="fetch-type">
       
<xsd:restriction base="xsd:token">
           
<xsd:enumeration value="LAZY" />
           
<xsd:enumeration value="EAGER" />
       
</xsd:restriction>
   
</xsd:simpleType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="many-to-one">
       
<xsd:sequence>
           
<xsd:element name="cascade" type="emd:cascade-type" minOccurs="0" />
       
</xsd:sequence>
       
<xsd:attribute name="name" type="xsd:string" use="required" />
       
<xsd:attribute name="alias" type="xsd:string" />
       
<xsd:attribute name="target-entity" type="xsd:string" />
       
<xsd:attribute name="fetch" type="emd:fetch-type" />
       
<xsd:attribute name="id" type="xsd:boolean" />
   
</xsd:complexType>
   
<!-- **************************************************** -->
   
<xsd:complexType name="one-to-one">
       
<xsd:sequence>
           
<xsd:element name="cascade" type="emd:cascade-type" minOccurs="0" />
       
</xsd:sequence>
       
<xsd:attribute name="name" type="xsd:string" use="required" />
       
<xsd:attribute name="alias" type="xsd:string" />
       
<xsd:attribute name="target-entity" type="xsd:string" />
       
<xsd:attribute name="fetch" type="emd:fetch-type" />
       
<xsd:attribute name="mapped-by" type="xsd:string" />
       
<xsd:attribute name="id" type="xsd:boolean" />
   
</xsd:complexType>
   
<!-- **************************************************** -->
   
<xsd:complexType name="one-to-many">
       
<xsd:sequence>
           
<xsd:element name="order-by" type="emd:order-by" minOccurs="0" />
           
<xsd:element name="cascade" type="emd:cascade-type" minOccurs="0" />
       
</xsd:sequence>
       
<xsd:attribute name="name" type="xsd:string" use="required" />
       
<xsd:attribute name="alias" type="xsd:string" />
       
<xsd:attribute name="target-entity" type="xsd:string" />
       
<xsd:attribute name="fetch" type="emd:fetch-type" />
       
<xsd:attribute name="mapped-by" type="xsd:string" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="many-to-many">
       
<xsd:sequence>
           
<xsd:element name="order-by" type="emd:order-by" minOccurs="0" />
           
<xsd:element name="cascade" type="emd:cascade-type" minOccurs="0" />
       
</xsd:sequence>
       
<xsd:attribute name="name" type="xsd:string" use="required" />
       
<xsd:attribute name="alias" type="xsd:string" />
       
<xsd:attribute name="target-entity" type="xsd:string" />
       
<xsd:attribute name="fetch" type="emd:fetch-type" />
       
<xsd:attribute name="mapped-by" type="xsd:string" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:simpleType name="order-by">
       
<xsd:restriction base="xsd:string" />
   
</xsd:simpleType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="cascade-type">
       
<xsd:sequence>
           
<xsd:element name="cascade-all" type="emd:emptyType" minOccurs="0" />
           
<xsd:element name="cascade-persist" type="emd:emptyType" minOccurs="0" />
           
<xsd:element name="cascade-remove" type="emd:emptyType" minOccurs="0" />
           
<xsd:element name="cascade-invalidate" type="emd:emptyType" minOccurs="0" />
           
<xsd:element name="cascade-merge" type="emd:emptyType" minOccurs="0" />
           
<xsd:element name="cascade-refresh" type="emd:emptyType" minOccurs="0" />
       
</xsd:sequence>
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="emptyType" />

   
<!-- **************************************************** -->
   
<xsd:complexType name="version">
         
<xsd:attribute name="name" type="xsd:string" use="required"/>
         
<xsd:attribute name="alias" type="xsd:string" />
            
<xsd:attribute name="type" type="xsd:string" />
   
</xsd:complexType>

   
<!-- **************************************************** -->

   
<xsd:complexType name="entity-listeners">
       
<xsd:sequence>
           
<xsd:element name="entity-listener" type="emd:entity-listener" minOccurs="0" maxOccurs="unbounded" />
       
</xsd:sequence>
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="entity-listener">
       
<xsd:sequence>
           
<xsd:element name="pre-persist" type="emd:pre-persist" minOccurs="0" />
           
<xsd:element name="post-persist" type="emd:post-persist" minOccurs="0" />
           
<xsd:element name="pre-remove" type="emd:pre-remove" minOccurs="0" />
           
<xsd:element name="post-remove" type="emd:post-remove" minOccurs="0" />
           
<xsd:element name="pre-invalidate" type="emd:pre-invalidate" minOccurs="0" />
           
<xsd:element name="post-invalidate" type="emd:post-invalidate" minOccurs="0" />
           
<xsd:element name="pre-update" type="emd:pre-update" minOccurs="0" />
           
<xsd:element name="post-update" type="emd:post-update" minOccurs="0" />
           
<xsd:element name="post-load" type="emd:post-load" minOccurs="0" />
       
</xsd:sequence>
       
<xsd:attribute name="class-name" type="xsd:string" use="required" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="pre-persist">
       
<xsd:attribute name="method-name" type="xsd:string" use="required" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="post-persist">
       
<xsd:attribute name="method-name" type="xsd:string" use="required" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="pre-remove">
       
<xsd:attribute name="method-name" type="xsd:string" use="required" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="post-remove">
       
<xsd:attribute name="method-name" type="xsd:string" use="required" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="pre-invalidate">
       
<xsd:attribute name="method-name" type="xsd:string" use="required" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="post-invalidate">
       
<xsd:attribute name="method-name" type="xsd:string" use="required" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="pre-update">
       
<xsd:attribute name="method-name" type="xsd:string" use="required" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="post-update">
       
<xsd:attribute name="method-name" type="xsd:string" use="required" />
   
</xsd:complexType>

   
<!-- **************************************************** -->
   
<xsd:complexType name="post-load">
       
<xsd:attribute name="method-name" type="xsd:string" use="required" />
   
</xsd:complexType>

</xsd:schema>


Parent topic:

Define an entity schema