Schéma de datagraphe
Schéma de datagraphe créé par le médiateur d'EJB
Le schéma créé par le médiateur pour une requête comprend une Eclass pour chaque instruction de requête. Le nom de l'Eclass est l'ASN (Abstract Schema Name) de l'EJB (Enterprise JavaBeans). Les Eattributes de l'Eclass correspondent aux zones CMP (container-managed persistence) ou aux expressions renvoyées par l'instruction de requête.
Pour les objets de données statiques, le nom d'Eclass peut être différent si l'argument Map (mappage) est utilisé pour l'appel createMediator.
Chaque relation EJB spécifiée dans la clause FROM ou XREL ajoute une Ereference dans le schéma. Les relations EJB peuvent être unidirectionnelles ou bidirectionnelles. Néanmoins, toutes les Ereferences sont définies comme bidirectionnelles afin de parcourir efficacement le datagraphe pour la mise à jour. Un nom de relation inverse est généré en cas de relation EJB unidirectionnelle. Un nom généré prend le format <ASName_source><ASName_target>. Par exemple, si les ASName sont EmpBean et DeptBean, et que la relation unidirectionnelle est dept et passe de EmpBean à DeptBean, le nom inversé généré est DeptBeanEmpBean.
- Les noms Eclass des objets de données correspondent aux noms ASN des EJB
- Les types et les noms des attributs des objets de données sont les types et les noms des expressions des clauses SELECT des requêtes
- Les types et les noms des références des objets de données sont issus des relations entre EJB référencées dans les clauses FROM
Un objet de données fictif est créé ; il porte le nom Eclass DataGraphRoot et possède une référence d'imbrication à tous les objets de données. La référence se voit dotée de plusieurs valeurs, en utilisant le nom ASN d'EJB.
DataObject root = m.getGraph( parms );
root.getType().getName(); // this would return the string "DataGraphRoot"
List depts = (List) root.get("DeptBean");
// the list of all DeptBean SDOs in the DataGraph
List emps = (List) root.get("EmpBean");
// the list of all EmpBean SDOs in the DataGraph
Schémas de confinement du datagraphe
Les références entre les SDO (Service Data Objects) peuvent être définies comme des références de confinement, de sorte que lorsqu'un SDO est supprimé, la suppression est répétée en cascade sur tous les SDO contenus. De plus, lorsque le datagraphe est sérialisé en tant que document XML, les SDO contenus sont imbriqués dans le SDO parent. Les références non contenues sont exprimées sous forme d'expressions des chemin d'accès dans le document XML.
Le confinement doit être défini dans le schéma du datagraphe. Lorsque le médiateur définit le schéma, le SDO racine (nommé DatagrapheRacine) contient tous les autres SDO. Les relations entre EJB sont définies en tant que références SDO non contenues.
- ROOT_CONTAINS_ALL
- Dans ce modèle, un SDO factice correspond à la racine. Il est factice dans le sens où il ne correspond pas à un EJB. Son but est de contenir tous les autres SDO. Si le médiateur génère le schéma de graphique, la racine factice possède un nom de classe DataGraphRoot et contient des références portant les noms ASN EJB. Si l'appelant utilise un schéma statique, la racine peut porter n'importe quel nom. L'Eclass de la racine est transmise à l'appel createMediator.
- ROOT_CONTAINS_SOME
- Ce modèle s'applique uniquement au schéma statique. Il existe toujours un SDO factice qui correspond à la racine du graphique. Les autres SDO doivent être contenus par la Ereference qui correspond à la relation EJB utilisée dans l'instruction de requête ou le SDO doit être contenu par la racine factice.
- NO_DUMMY ROOT
- Ce modèle s'applique uniquement au schéma statique. Il n'y a pas de racine factice. Le SDO racine correspond à la première instruction de requête qui ne doit renvoyer qu'une seule instance. Les SDO non-racine doivent être contenus par la Ereference correspondant à la relation EJB qui est utilisée dans l'instruction de requête.