Syntaxe de la requête du médiateur d'EJB
Lorsque vous commencez à développer vos applications en vue de tirer parti du Data Mediator Service (DMS) Enterprise JavaBeans (EJB) fourni dans le produit, tenez compte des éléments décrits ci-après.
- Le DMS EJB utilise comme argument d'entrée une requête EJB composée comprenant un tableau d'instructions EJB query language (QL) et une commande XREL facultative. La commande XREL est une liste de relations EJB et doit apparaître en dernier dans le tableau.
- Chaque requête QL EJB renvoie des données sous la forme d'instance Service DataObjects (SDO). Toutes les instances SDO sont fusionnées dans un datagraphe. La clause SELECT de chaque requête spécifie les zones CMP (container-managed persistence) ou les expressions à retourner dans le SDO. La clause WHERE indique les conditions de filtrage et vous pouvez définir une clause ORDER BY. Si au moins deux SELECT renvoient le même type SDO, chaque SELECT doit projeter les mêmes expressions et zones CMP. Pour permettre la mise à jour, les zones de clé primaire de l'EJB doivent être projetées. Les JOIN, UNION, et l'agrégation ne sont pas pris en charge sauf dans les sous-requêtes.
- Une requête du tableau peut se référer à une requête antérieure de la clause FROM, en utilisant la variable d'identification définie dans la requête antérieure et un nom de relation. Cette relation peut être unique ou de collection.
- Les relations sont construites entre les instances d'objet de données du graphique lorsqu'une relation est utilisée dans la clause FROM ou la commande XREL.
- Les arguments d'entrée de collection sont pris en charge dans la clause FROM. Si ?1 se réfère à une collection d'EJB Dept, la requête suivante est valide pour le médiateur. La syntaxe de transtypage est requise pour indiquer le type d'élément de collection au compilateur de requête.
select d.deptno from (Dept) ?1 as d
- L'argument d'entrée de collection est utile pour créer un datagraphe à partir d'instances EJB qui sont mises en cache dans le conteneur d'EJB ou le cache de données du gestionnaire de persistance.
- La clause SELECT peut spécifier une liste de zones CMP à rechercher (caractère
générique * autorisé pour rechercher toutes les zones CMP) ou d'expressions de langage de
requête d'EJB valides. Les expressions et zones CMP doivent être de l'un des types suivants :
- Types primitifs : boolean, byte, short, integer, long, float, double, char
- Types d'encapsuleurs pour les types primitifs
- Java™.lang.String
- Java.math.BigDecimal
- java.math.BigInteger
- octet [ ]
- Java.sql.Date
- java.sql.Time
- java.sql.Timestamp
- java.util.Date
- java.util.Calendar
- Toutes les zones CMP de clé primaire doivent être retrouvées pour que les mises à jour du service SDO (Service Data Objects) soient possibles ; sinon applyChanges provoque une exception.
- Les attributs SDO issus d'expressions de langage de requête d'EJB telles que e.salary + e.bonus AS TOTAL_PAY ne peuvent pas être mis à jour. Si vous tentez une mise à jour, applyChanges provoque une exception QueryException.
- Les expressions d'agrégation telles que SUM(e.salary) ne sont pas admises même si elles font partie du langage de requête d'EJB. En revanche, elles sont autorisées dans les sous-requêtes de la clause WHERE.