Requête fournie par le médiateur JDBC

Un client SDO peut fournir le service JDBC DMS (Data Mediator Service) avec l'instruction SELECT pour remplacer l'instruction qui est générée à partir des métadonnées du DMS.

Lorsqu'un client SDO initialise un service DMS, celui-ci utilise les métadonnées de définition pour générer une instruction SELECT basique. Le remplacement de cette requête vous permet de spécifier des marqueurs de paramètres ; vous avez ainsi plus de contrôle sur les données du client qui alimentent un datagraphe. Utilisez une chaîne standard SQL SELECT pour une requête fournie par le client.

Avec les requêtes fournies comme avec les requêtes générées, les instructions UPDATE, INSERT et DELETE sont automatiquement générées pour chaque objet de données. Elles sont appliquées lorsque le médiateur valide les modifications apportées au datagraphe dans la base de données.

Objets de données Paramètre pour requêtes fournies

Les clients peuvent utiliser un objet de données Paramètre pour fournir des arguments à une requête SELECT SQL. Un objet de données Paramètre est un objet de données qui ne fait partie d'aucun datagraphe. Il est créé par le service DMS JDBC lorsque le client émet une requête. L'objet de données Paramètre destiné aux requêtes fournies est créé en fonction de la requête transmise au médiateur. Chaque paramètre de la requête se voit attribuer un nom tel que arg0, arg1, …, argX.

Etant donné qu'un objet de données Paramètre est un objet de données, vous pouvez définir ses propriétés en utilisant soit le nom de la propriété, soit une valeur d'index. Les propriétés peuvent être référencées en fonction de leur nom argX, ou en fonction du numéro associé à ce paramètre, 0, 1, … , X. Par exemple, votre requête est “SELECT CUSTFIRSTNAME WHERE CUSTSTATE = ? AND CUSTZIP = ?”. Cette requête fournie contient deux paramètres. Le premier paramètre correspond à CUSTSTATE et peut être défini à l'aide de la chaîne “arg0” ou de l'index 0. Le second paramètre correspond à CUSTZIP et peut être défini à l'aide de la chaîne “arg1” ou de l'index 1. Voici un exemple de code de définition. Ce code suppose que vous avez déjà configuré les métadonnées et le médiateur à l'aide de ces métadonnées, ainsi que la requête fournie mentionnée plus haut. A l'aide de la méthode de valeur d'index, vous codez comme suit :

DataObject parameters = mediator.getParameterDataObject();
parameter.setString(0, "NY");
parameter.setInt(1, 12345);
DataObject graph = mediator.getGraph(parameters);

A l'aide de la méthode de nom de propriété, vous codez :

DataObject parameters = mediator.getParameterDataObject();
parameters.setString("arg0", "NY");
parameters.setInt("arg1", 12345);
DataObject graph = mediator.getGraph(parameters);

Les résultats sont les mêmes dans les deux cas.

Limitations

La requête SELECT SQL générée par le service DMS JDBC n'est pas entièrement prise en charge sur Oracle ou Informix. Cela s'explique par le fait que le médiateur tire parti de l'interface ResultSetMetaData dans JDBC 2.0 et exige qu'elle soit pleinement implémentée. Or, Oracle, Informix, DB2/390, et les versions plus anciennes de Sybase prises en charge n'implémentent pas pleinement l'interface ResultSetMetaData. L'approche de requête fournie peut toujours être utilisée avec ces bases de données, mais avec une limitation : les noms de colonne des métadonnées doivent être uniques à travers l'ensemble des tables. Une exception InvalidMetadataException est générée si l'instruction SELECT renvoie une colonne dont le nom figure plusieurs fois dans les métadonnées. Par exemple, si les tables Customer et Order contiennent toutes les deux une colonne nommée “ID”, cela entraînera des incidents. La façon de résoudre ce problème consiste à modifier le nom d'au moins l'une des colonnes correspondantes dans la base de données afin de mieux distinguer ces colonnes entre elles. Pour la table Customer, le nom de colonne pourrait devenir “CUSTID,”, comme illustré dans les exemples. Le nom de la colonne de la table Order pourrait devenir “ORDERID”. Si vous changez le nom de la colonne de la table Customer, vous n'avez pas besoin de modifier le nom de la colonne de la table Order, mais il est préférable de le faire par souci de cohérence.


Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdat_sdosquery
Nom du fichier : rdat_sdosquery.html