Cette rubrique contient les sections suivantes :
Pour comprendre les conventions utilisées dans les diagrammes, voir Lecture des diagrammes de syntaxe.
L'utilitaire Generator de pureQuery requiert des paramètres permettant de spécifier l'environnement Eclipse à utiliser, la base de données, le pilote JDBC et l'interface à utiliser lors de la génération d'une classe d'implémentation.
L'utilitaire Generator analyse le contenu du fichier d'interface en entrée et crée un code Java qui analyse ou met à jour l'objet de données référencé dans les annotations @Select, @Update et @Call. Il génère le code permettant de remplir le bean cible d'une opérations d'analyse et utilise son contenu pour la mise à jour en tant que données d'entrée.
La plupart des utilisateurs pureQuery génère leurs applications à l'aide du plan de travail. Dans cet environnement, l'utilitaire Generator de pureQuery est automatiquement appelé pour toutes les interfaces de méthode annotée pureQuery que contient un projet Java dont le support pureQuery est activé. La génération des implémentations d'interface a lieu dans le cadre du processus normal de génération des projets Java.
Toutefois, vous pouvez également appeler l'utilitaire Generator de pureQuery à partir d'une ligne de commande. IBM® Data Studio Developer, IBM Optim Development Studio, ou IBM Data Studio doit être installé. Selon le produit installé, vous devez inclure le fichier .jar suivant dans le chemin d'accès aux classes du système ou le chemin d'accès aux classes JVM lors de l'exécution de l'utilitaire Generator :
L'utilitaire Generator ne démarre pas le produit. Il utilise uniquement l'infrastructure et les plugins offert pas ces produits.
Un fichier d'options répertorie la ou les interfaces que l'utilitaire pureQuery Generator doit traiter, ainsi que les options indiquant à l'utilitaire Generator comment traiter les interfaces. Vous pouvez définir les options par défaut s'appliquant à toutes les interfaces répertoriées dans un fichier d'options. Vous pouvez également définir des options d'interface afin de remplacer les options par défaut et d'en définir d'autres spécifiques aux interfaces individuelles.
Dans la commande d'exécution de l'utilitaire Generator, vous pouvez vérifier le fichier à utiliser à l'aide de l'option -optionsFile.
defaultOptions = -driverName com.ibm.db2.jcc.DB2Driver -url jdbc:db2://SRVR01:50000/DB01 -username user01 -password passw0rd com.myCompany.MyInterfaceA = -collection NULLID com.myCompany.MyInterfaceB = -collection COLL01 -xmlFile C:\overrides\myInterfaceB_sql2.xml com.myCompany.MyInterfaceC = -url jdbc:db2://SRVR01:50001/DB02 -username user02 -password pass02Dans cet exemple, la ligne commençant par defaultOptions indique le pilote à utiliser lors de la connexion à la base de données, l'URL de connexion à la base de données, le nom d'utilisateur et le mot de passe. Ces paramètres s'appliquent à toutes les interfaces se trouvant dans le fichier d'options. Les lignes qui sont spécifiques aux interfaces définissent les options de ces interfaces uniquement.
-pkgVersion "ver#1"
Dans un fichier d'options, vous pouvez créer une entrée qui indique les propriétés de génération appliquées à un ensemble d'interfaces Java. Créez une ligne commençant par groupOptions.nom-groupe. L'identificateur de groupe correspond à la valeur de nom-groupe. La valeur nom-groupe est la chaîne attribuée à une interface avec l'annotation @Group de pureQuery.
@Group ("Payroll") public Interface CalculateTax { … }Si l'entrée groupOptions.Payroll est spécifiée dans un fichier d'options, l'utilitaire Generator génère les classes d'implémentation pour l'interface CalculateTax avec les paramètres d'option spécifiés.
groupOptions.Payroll= -collection Payroll -url "jdbc:db2://com.prod.hr:50000/DB01"Pour obtenir des informations sur l'annotation @Group, voir Controlling how pureQuery utilities process interfaces.
Vous pouvez utiliser uniquement la commande si vous souhaitez utiliser les mêmes options pour toutes les interfaces que vous spécifiez.
(1) >>-java--org.eclipse.core.launcher.Main-- -application--com.ibm.pdq.tools.Generator------> >-- -data--espace_travail_temporaire----------------------------> >-- -driverName--pilote_JDBC------------------------------------> >-- -url--URL_connexion-- -username--ID_utilisateur-- -password--mot_de_passe--> >--+------------------------+-- -rootPath--chemin_racine--------> | .-FALSE-. | '- -noCleanup--+-TRUE--+-' >--+--------------------------------+---------------------------> '- -userClasspath--chemin_classe-' >--+----------------------------------+-------------------------> | .-NULLID---------. | '- -collection--+-nom_collection-+-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-ID_version-' >--+-----------------------------------+------------------------> '- -rootPkgName--racine_nom_package-' >--+-----------------------------------------+------------------> | .-INTERFACE---------. | '- -rootPkgPattern--+-INTERFACE_JAVAPKG-+-' '-JAVAPKG_INTERFACE-' >--+-------------------------------------------------+----------> '- -rootPkgExclusion--="--fichier-pureQueryXML--"-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+--+--------------------------+-----> '- -xmlFile--fichier_XML-' | (2) | '-| Options de trace |-----' .-------------------------------. V | >-- -interface----package-java.interface.classe-+---------------> >--+---------------------------------------------+------------->< '- -baseDataOverride--package_java.nom_classe-'
Vous pouvez utiliser un fichier d'options pour spécifier les noms des interfaces et les options de création des modules DB2 ou des fichiers DBRM. Avec un fichier d'options, vous pouvez spécifier différentes options pour les différentes interfaces.
Si vous utilisez le plan de travail, vous pouvez faire figurer dans un fichier d'options (Default.genProps par défaut, par exemple) uniquement les interfaces dont vous souhaitez individuellement spécifier des options. La ligne defaultOptions s'applique à toutes les interfaces d'un projet Java.
(1) >>-java--org.eclipse.core.launcher.Main-- -application--com.ibm.pdq.tools.Generator------> >-- -data--espace_travail_temporaire----------------------------> >-- -driverName--pilote_JDBC------------------------------------> >-- -url--URL_connexion-- -username--ID_utilisateur-- -password--mot_de_passe--> >-- -optionsFile--nom_fichier--+------------------------+-------> | .-FALSE-. | '- -noCleanup--+-TRUE--+-' >-- -rootPath--chemin_racine------------------------------------> >--+--------------------------------+---------------------------> '- -userClasspath--chemin_classe-' >--+--------------------------+-------------------------------->< | (2) | '-| Options de trace |-----'
Les deux diagrammes de syntaxe restants expliquent comment créer des entrées dans des fichiers d'options.
Ce diagramme de syntaxe affiche les options par défaut que vous pouvez définir pour toutes interfaces figurant dans un fichier d'options.
(1) >>-defaultOptions--=------ -driverName--pilote_JDBC-------------> >-- -url--URL_connexion-- -username--ID_utilisateur-- -password--mot_de_passe--> >--+------------------------+-- -rootPath--chemin_racine--------> | .-FALSE-. | '- -noCleanup--+-TRUE--+-' >--+--------------------------------+---------------------------> '- -userClasspath--chemin_classe-' >--+--------------------------+---------------------------------> | (2) | '-| Options de trace |-----' >--+----------------------------------+-------------------------> | .-NULLID---------. | '- -collection--+-nom_collection-+-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-ID_version-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> '- -xmlFile--fichier_XML-' >--+---------------------------------------------+------------->< '- -baseDataOverride--package_java.nom_classe-'
Ce diagramme de syntaxe affiche les options que vous pouvez définir pour chaque interface figurant dans un fichier d'options.
(1) >>-package_java.interface--=------ -driverName--pilote_JDBC-----> >-- -url--URL_connexion-- -username--ID_utilisateur-- -password--mot_de_passe--> >--+----------------------------------+-------------------------> | .-NULLID---------. | '- -collection--+-nom_collection-+-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-ID_version-' >--+-----------------------------------+------------------------> '- -rootPkgName--racine_nom_package-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> '- -xmlFile--fichier_XML-' >--+---------------------------------------------+------------->< '- -baseDataOverride--package_java.nom_classe-'
Ce diagramme de syntaxe indique les options que vous pouvez définir pour les interfaces, appliquées à un ensemble d'interfaces Java portant l'identificateur de groupe nom-groupe. Le nom-groupe est attribué à une interface avec l'annotation @Group de pureQuery. La valeur nom-groupe est sensible à la casse. Pour chaque valeur nom-groupe, une seule entrée groupOptions est autorisée dans le fichier d'options.
La propriété -rootPkgName ne peut pas être spécifiée comme option.
(1) >>-+----------------------------------+-------------------------> '-groupOptions--.--nom-groupe--=---' >-- -driverName--pilote_JDBC------------------------------------> >-- -url--URL_connexion-- -username--ID_utilisateur-- -password--mot_de_passe--> >--+------------------------+-- -rootPath--chemin_racine--------> | .-FALSE-. | '- -noCleanup--+-TRUE--+-' >--+--------------------------------+---------------------------> '- -userClasspath--chemin_classe-' >--+--------------------------+---------------------------------> | (2) | '-| Options de trace |-----' >--+----------------------------------+-------------------------> | .-NULLID---------. | '- -collection--+-nom_collection-+-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-ID_version-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> '- -xmlFile--fichier_XML-' >--+---------------------------------------------+------------->< '- -baseDataOverride--package_java.nom_classe-'
Si vous souhaitez utiliser l'option -isolationLevel pour définir les accès d'un seul ensemble d'instructions en deux ou trois packages différents (chaque package à un autre niveau d'isolement), n'utilisez pas l'option -forceSingleBindIsolation lorsque vous exécutez l'utilitaire Configure sur le fichier pureQueryXML dans lequel apparaît l'ensemble d'instructions.
Par exemple, dans un fichier d'options pour l'utilitaire StaticBinder, supposez que vous avez inclus les deux entrées suivantes :
C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel UR C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel CS
Si vous avez utilisé l'option -forceSingleBindIsolation lors de l'exécution de l'utilitaire Configure sur le fichier captureFile.pdqxml, l'utilitaire StaticBinder effectue les actions suivantes :
Le résultat est un package MYPKGA unique dont les accès sont définis au niveau d'isolement CS.
Si vous voulez avoir deux packages MYPKGA comme résultat, un au niveau d'isolement UR et l'autre au niveau CS, n'utilisez pas l'option -forceSingleBindIsolation lors de l'exécution de l'utilitaire Configure sur captureFile.pdqxml.
DB2 accepte la présence simultanée de plusieurs versions d'un même package, ce qui vous permet de définir les accès des nouveaux packages sans devoir remplacer les anciennes versions des packages portant un nom identique. Si vous rencontrez des difficultés avec une version récente d'un package, vous pouvez toujours utiliser une version plus ancienne de ce package.
Si vous n'utilisez pas cette option, les packages de base de données résultant de définitions d'accès ultérieures sont créés sans version.
La vérification de la version au moment de l'exécution est basée sur la marque de cohérence, et non pas sur le nom de la version.
Si vous prévoyez de générer des fichiers DBRM avec l'utilitaire pureQuery StaticBinder plutôt que de créer des packages DB2, vous devez utiliser des majuscules pour la valeur racine_nom_package et cette valeur ne doit pas comporter plus de 7 caractères. Si vous utilisez l'utilitaire StaticBinder pour générer un fichier DBRM, cet utilitaire émet une exception dès lors que vous dépassez un total de 7 caractères pour la combinaison racine_nom_package / caractères ajoutés pour le niveau d'isolement.
Les noms de package doivent être uniques au sein d'une même base de données : vous ne pouvez pas attribuer un nom de package racine donné à plusieurs interfaces. Vous pouvez indiquer un nom de package racine dans la ligne de commande si vous y spécifiez une unique interface. Vous pouvez également indiquer un nom de package racine pour des interfaces dans un fichier d'options, mais pas au niveau de la ligne defaultOptions.
Cette option ne peut pas être spécifiée avec l'option -rootPkgPattern.
Elle peut être spécifiée avec l'option -rootPkgExclusion pour contrôler les noms de packages DB2 créés par l'utilitaire StaticBinder.
Lors de la génération du nom du package racine à partir d'un nom de package Java, le caractère point servant de délimiteur doit être remplacé par le caractère de soulignement.
Si la longueur totale du chemin du package Java plus le nom de l'interface sont supérieurs à un/inférieur à la longueur maximale de la base de données, une erreur est signalée et la liaison de ce package n'est pas exécutée.
Si le nom de l'interface est com.acme.payroll.report.monthly.CommissionData, la table suivante répertorie le nom du package racine généré pour les valeurs de l'option -rootPkgPattern :
Valeur de l'option -rootPkgPattern | Nom du package racine DB2 généré |
---|---|
INTERFACE | CommissionData |
INTERFACE_JAVAPKG | CommissionData_com_acme_payroll_report_monthly |
JAVAPKG_INTERFACE | com_acme_payroll_report_monthly_CommissionData |
JAVAPKG_INTERFACE spécifié avec l'option -rootPkgExclusion="com.acme | payroll_report_monthly_CommissionData |
préfixe_package indique un nom délimité par un point qui correspond à la première partie du nom du package Java.
Par exemple, si tous les noms de packages Java d'un projet commencent par com.acme, cette option permet de supprimer cette partie redondante des noms de packages générés. Lors de la génération, si le nom du package Java ne commence pas par la chaîne spécifiée, l'utilitaire essaie d'utiliser le nom de package Java complet.
Par exemple, si le nom de l'interface Java est com.acme.payroll.report.monthly.CommissionData et que l'option -rootPkgExclusion="com.acme" est spécifiée, la chaîne com.acme est exclue lors de la création du nom du package racine DB2.
Par exemple, le répertoire peut être C:\user\app1\. Dans ce répertoire se trouvent des sous-répertoires correspondant aux packages Java, tels que C:\user\app1\com\myCompany\.
A l'aide de l'option -interface de l'utilitaire Generator, indiquez le nom de l'interface que l'utilitaire doit traiter, en indiquant son nom avec le nom du package, comme suit : com.myCompany.MyInterface
L'interface doit pouvoir être compilée.
L'utilitaire Generator génère une classe d'implémentation dans le même répertoire que celui de l'interface correspondante. Par conséquent, chaque classe d'implémentation est créée dans le même package Java que son interface.
Si vous exécutez l'utilitaire pureQuery Generator avec -rootPath défini sur C:\user\app1\ et -interface défini sur com.myCompany.MyInterface, l'utilitaire génère la classe MyInterfaceImpl.java dans le répertoire C:\user\app1\com\myCompany\. Le nom qualifié complet de la classe est com.myCompany.MyInterfaceImpl.
Si vous n'utilisez pas l'option -rootPath, l'utilitaire pureQuery Generator utilise le répertoire de travail.
>>-+--------------------------+---------------------------------> '- -traceFile--nom_fichier-' >--+---------------------------+------------------------------->< | .-OFF-----. | '- -traceLevel--+-ALL-----+-' +-SEVERE--+ +-WARNING-+ +-INFO----+ +-CONFIG--+ +-FINE----+ +-FINER---+ '-FINEST--'