Configuration de l'exécution statique des instructions SQL dans les applications d'API non pureQuery à l'aide du plan de travail

Le plan de travail propose des fonctions permettant de capturer et lier les instructions SQL d'une application d'API différente de pureQuery et de les exécuter en mode statique lors de l'exécution de cette application.

Avant de commencer

Vérifiez que votre système est conforme aux exigences de configuration logicielle et matérielle. Voir Configuration requise pour Optim pureQuery Runtime.

L'application doit se trouver dans un projet Java du plan de travail.

Avant toute définition d'accès, assurez-vous que les conditions ci-après sont réunies.
  • L'ensemble de privilèges de l'utilisateur qui appelle l'utilitaire pureQuery StaticBinder doit inclure l'un des droits suivants :
    • Le droit SYSADM
    • Le droit DBADM
    • Si le module n'existe pas, le privilège BINDADD ainsi que l'un des privilèges suivants :
      • Le privilège CREATEIN
      • DB2 for z/OS : le droit PACKADM pour la collection ou pour toutes les collections
      • DB2 Database for Linux, UNIX, and Windows : le droit IMPLICIT_SCHEMA pour la base de données si le nom de schéma du module n'existe pas
    • DB2 for z/OS : si le module existe, le privilège BIND pour ce module
    • DB2 Database for Linux, UNIX, and Windows : si le module existe :
      • Le privilège ALTERIN pour le schéma
      • Le privilège BIND pour le module
  • DB2 for Linux, UNIX, and Windows : l'utilisateur doit également disposer de tous les privilèges nécessaires pour compiler les instructions SQL statiques de l'application. Les privilèges accordés aux groupes ne permettent pas de vérifier les autorisations pour les instructions statiques. Si l'utilisateur dispose du droit SYSADM mais sans privilèges explicites pour la définition des accès, le gestionnaire de la base de données DB2 accorde automatiquement un droit DBADM explicite.
Vous pouvez utiliser un référentiel de gestion SQL créé dans une base de données pour les activités suivantes lorsque vous utilisez pureQuery Runtime pour l'exécution statique dans des applications d'API non pureQuery :
  • Stockez les instructions SQL et les informations associées capturées par l'optimisation client pureQuery.
  • Stockez et gérez les informations de configuration de pureQuery Runtime et les informations relatives au fichier pureQueryXML.
  • Récupérez les informations pureQuery à utiliser par une application activée pour une optimisation client pureQuery.

Procédure

Pour configurer l'exécution statique des instructions SQL dans des applications d'API différentes de pureQuery, voici la procédure de base :

  1. Activez pureQuery pour capturer les instructions SQL présentes dans votre application et pour définir leurs accès.
  2. Facultatif : Créez des tests JUnit pour votre application d'API différente de pureQuery exécutant toutes les instructions SQL à capturer. Si vous ne créez pas de tests d'unité, vous devez utiliser l'application de sorte qu'elle exécute toutes les instructions SQL que vous voulez exécuter en mode statique.

    Pour tout information concernant les tests JUnit du plan de travail, voir Création et exécution de tests JUnit.

  3. Capturez les instructions SQL que vous voulez exécuter en mode statique.
    1. Définissez les valeurs des propriétés qui déterminent la manière dont pureQuery capture les instructions SQL.
    2. Exécutez l'application ou les tests JUnit.
    Une fois que vous avez terminé, le plan de travail crée dans votre projet Java les fichiers pureQueryXML que vous avez spécifiés. Vous pouvez répéter cette étape si vous n'avez pas capturé toutes les instructions SQL de votre application et souhaitez les capturer.
  4. Configurez les modules DB2 que vous souhaitez créer à partir des instructions SQL.
    1. Editez le fichier Default.genProps en spécifiant la collection, les noms racine et les versions des modules DB2 à créer.
      Après avoir sauvegardé le fichier, actualisez la vue Structure SQL, qui peut afficher l'apparence de vos modules DB2 compte tenu des valeurs que vous avez indiquées. Pour en savoir plus sur cette vue, voir Vue Structure SQL.
    2. Facultatif : Editez ou fusionner vos fichiers pureQueryXML.
      Ces fichiers contiennent des ensembles d'instructions SQL. Les modules DB2 que vous créez à partir des instructions reposent sur ces ensembles. Vous pouvez modifier les noms des ensembles d'instructions, déplacer les instructions vers d'autres ensembles, ajouter d'autres instructions et supprimer des instructions. Vous pouvez également fusionner des fichiers pureQueryXML.
  5. Créez les modules DB2.
    1. Editez le fichier Default.bindProps et définissez les options déterminant comment l'utilitaire StaticBinder va définir les accès pour les instructions SQL capturées dans les modules DB2.
    2. Définissez les accès des instructions SQL capturées dans les modules en procédant de l'une des façons suivantes :
      • Cliquez avec le bouton droit de la souris sur des fichiers pureQueryXML individuels dans le dossier pureQueryFolder puis sélectionnez Lier.
      • Cliquez avec le bouton droit de la souris sur le dossier du projet puis sélectionnez pureQuery > Lier l'application pureQuery. Cette méthode vous permet de définir les accès des instructions SQL dans tous vos fichiers pureQueryXML en une seule fois.
      La fenêtre Sélectionner la connexion s'ouvre pour vous permettre de choisir la base de données DB2 à utiliser. Vous pouvez sélectionner une base de données qui n'est pas associée à votre projet Java.
      Avertissement : Vous ne pouvez pas effectuer l'opération de définition d'accès si vous travaillez hors ligne. Vous devez être connecté à la base de données DB2 pour laquelle vous allez définir les accès.

      Si vous capturez d'autres instructions SQL dans les fichiers pureQueryXML après cette étape, vous devez réexécuter la définition d'accès sur ces fichiers.

    3. Affichez les modules DB2 et les instructions SQL qu'ils contiennent.
      Sélectionnez le dossier du projet et consultez la page SQL de la vue Structure SQL afin de vous assurer que les packages DB2 créés sont bien ceux que vous vouliez.
      Pour changer les propriétés des modules :
      1. Editez le fichier Default.genProps. Si vous créez de nouvelles versions de modules existants, utilisez l'option -pkgVersion.
      2. Editez le fichier Default.bindProps.
      3. Répétez l'opération de définition des accès. Les modules DB2 existants sont remplacés, excepté si vous avez utilisé l'option -pkgVersion.

      Vous pouvez encore éditer le source Java ou les instructions SQL dans votre application. Une fois cette édition terminée, supprimez vos fichiers pureQueryXML et capturez à nouveau les instructions SQL. Ensuite, configurez les modules DB2 que vous voulez créer et redéfinissez les accès.

      Avertissement : Si vous modifiez uniquement les propriétés de l'optimisation client dans une adresse URL pour un objet Connection ou bien dans un objet Properties, il n'est pas utile de supprimer vos fichiers pureQueryXML. Toutefois, veillez à ne pas changer le nombre de lignes dans l'application lorsque vous modifiez ces propriétés.
  6. Exécutez votre application.

Que faire ensuite

Vous pouvez utiliser la vue Structure SQL pour identifier et résoudre les incidents liés à vos instructions SQL. N'oubliez pas que si vous modifiez l'une de vos instructions SQL ou tout autre élément de votre application, vous devez capturer à nouveau les instructions SQL et recréer vos modules DB2.

Si vous prévoyez de déployer votre application dans un fichier JAR : Avant de procéder à ce déploiement, assurez-vous que le fichier Default.bindProps comporte une entrée pour chaque fichier pureQueryXML contenant les instructions SQL dont vous voulez définir les accès. L'utilitaire pureQuery StaticBinder, que vous devez exécuter depuis une ligne de commande de la base de données sur laquelle vous déployez votre application, opère uniquement sur les fichiers pureQueryXML qui sont répertoriés dans le fichier Default.bindProps.

Pour ajouter des fichiers :
  1. Dans le dossier pureQueryFolder de votre projet, cliquez sur le fichier Default.bindProps avec le bouton droit de la souris puis sélectionnez pureQuery > Ajouter ou supprimer des entrées.
  2. Dans la fenêtre Ajouter ou supprimer des entrées, ajoutez tous les fichiers pureQueryXML nécessaires.

Si vous pensez être amené à revoir les noms racines des modules, les ID collection et les versions de vos modules DB2 après déploiement de l'application, vous devez également vous assurer que votre fichier Default.genProps contient une entrée pour chacun des fichiers pureQueryXML sur lesquels porte la ligne defaultOptions. Vous pouvez également ajouter des entrées à ce fichier par clic droit de la souris depuis la fenêtre Ajouter ou supprimer des entrées.


Commentaires