Types d'objets dynamiques et statiques pour le service DMS JDBC
Les objets de données de la spécification du SDO (Service Data Object) 1.0 peuvent utiliser des types dynamiques ou statiques. Si vous savez que ce schéma particulier de datagraphe remplit toutes les exigences de vos requêtes d'applications, vous pouvez générer un code SDO statique pour profiter d'avantages potentiels en terme d'exécution.
Avec des types dynamiques, les informations qui définissent la forme d'un datagraphe sont générées lors de l'exécution. Le schéma du datagraphe est généré par le service DMS (data mediator service) JDBC à partir des métadonnées fournies au moment de la création. Le service DMS JDBC nécessite uniquement des métadonnées et une connexion à une source de données pour générer le datagraphe à l'aide du typage dynamique. Il s'agit de la méthode par défaut de création du service DMS JDBC.
Si vous connaissez la forme du datagraphe au moment du développement, vous pouvez utiliser un générateur de code pour créer des interfaces fortement typées qui simplifient la navigation dans le datagraphe, permettent une meilleure vérification des erreurs au moment de la compilation et améliorent les performances. Pour plus d'informations sur les métamodèles pour lesquels vous pouvez générer un code SDO statique, consultez l'introduction de la spécification SDO 1.0. Cette introduction contient une liste des exigences en terme de portée de spécification, où vous trouverez une brève section sur la prise en charge d'API de données statiques. Notez que l'API dynamique est toujours disponible lorsque des objets de données fortement typés sont utilisés.
Le générateur de code crée des classes pour chaque type d'objet de données du datagraphe. Chaque classe contient des méthodes getter() et setter() pour chaque propriété de l'objet de données. Un client peut ainsi appeler des méthodes garantissant la cohérence entre types et données au lieu de transmettre le nom d'une propriété. Par exemple, au lieu d'appeler la propriété DataObject.get("CUSTFIRSTNAME"), les types générés peuvent contenir une méthode DataObject.getCustFirstName(). Si vous accédez à un objet de données associé, un programme d'accès renvoie un objet de données fortement typé au lieu d'un objet de données standard. Par exemple, DataObject.get("Customers_Orders") renvoie un objet de données, mais DataObject.getOrders() renvoie un objet de type Commande (Order).
Pour utiliser un typage statique avec le service DMS JDBC, les métadonnées, une connexion à la source de données et le schéma du datagraphe doivent être fournis aux méthodes create de la classe JDBCMediatorFactory. Dans ce cas, les métadonnées du service DMS JDBC ne déterminent pas la forme du datagraphe mais fournissent au DMS des informations sur la sources de données dorsale et la façon dont elle est mappée vers un datagraphe.
Lorsque vous utilisez des objets de données fortement typés, il est important de vous assurer que la requête correspond au schéma du datagraphe. La requête n'est pas tenue de renseigner tous les objets de données et toutes les propriétés du schéma, mais une requête ne peut pas renvoyer d'objets de données ou de propriétés qui ne sont pas définis dans le schéma du datagraphe. Par exemple, un schéma de datagraphe peut définir les objets de données Customer et Order, mais une requête peut uniquement renvoyer des objets Customer. De même, l'objet Customer peut définir des propriétés pour ID, Name et Address, mais la requête peut ne pas renvoyer d'adresse. Dans ce cas, la valeur de la propriété address est null, et la valeur n'est pas mise à jour dans la base de données lorsque la méthode applyChanges() est appelée. Dans cet exemple, la requête n'a pas pu renvoyer de propriété Phone parce que celle-ci n'a pas été définie en tant que propriété sur l'objet Customer. Lorsqu'une requête tente de le faire, le service DMS renvoie une exception de métadonnées non valide.