Exécution statique d'instructions SQL à partir d'applications Java Persistence API (JPA) exécutées dans WebSphere Application Server 7.0

Le plan de travail propose des fonctions qui vous permettent d'exécuter la commande wsdb2gen pour la création de fichiers pureQueryXML, de définir les accès des instructions SQL et d'exécuter ces instructions en mode statique lors de l'exécution de votre application JPA.

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 exister dans un projet JPA du plan de travail. Vous pouvez soit importer l'application dans un projet JPA, soit en développer un dans le plan de travail. Si vous souhaitez développer un projet, reportez-vous au guide d'utilisation des outils Eclipse Dali JPA à l'adresse suivante : http://www.eclipse.org/webtools/dali/. Pour le guide d'utilisation d'Apache OpenJPA, reportez-vous à la page "OpenJPA Documentation" à l'adresse suivante : http://openjpa.apache.org/documentation.html.

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.

Pourquoi et quand exécuter cette tâche

Les différentes étapes de cette tâche détaillent l'étape 4 des rubriques suivantes de la documentation des serveurs d'applications WebSphere 7.0 :

Procédure

Pour configurer l'exécution en mode statique des instructions SQL dans les applications JPA qui utilisent le serveur d'applications Websphere Application Server 7.0 :

  1. Activez le support pureQuery dans votre projet JPA. Vous devez configurer les projets JPA pour la prise en charge de pureQuery.
    1. Cliquez sur votre projet JPA avec le bouton droit de la souris puis sélectionnez Ajouter le support pureQuery. Suivez la procédure de l'assistant Ajout du support pureQuery. Pour obtenir des informations sur les différentes commandes de l'assistant, cliquez sur Aide dans l'angle inférieur gauche de cet assistant. Si l'aide ne s'affiche pas, sélectionnez une commande sur la page Ajouter le support pureQuery, puis cliquez à nouveau sur Aide.

    Lorsque vous cliquez sur Terminer, le plan de travail crée le dossier pureQueryFolder dans votre projet JPA. Ce dossier contient le fichier Default.bindProps.

    Si vous souhaitez désactiver la capture et la définition d'accès des instructions SQL qui se trouvent dans les applications d'API différentes de pureQuery et supprimer le support pureQuery du projet JPA, cliquez sur ce projet avec le bouton droit de la souris puis sélectionnez pureQuery > Supprimer le support pureQuery.

  2. Importez le fichier com.ibm.ws.jpa.jar dans votre projet et ajoutez-le à votre chemin de génération. Ce fichier est fourni avec le serveur d'applications WebSphere 7.0.
  3. Créez les fichiers pureQueryXML pour votre application JPA en cliquant sur le fichier persistence.xml de votre projet JPA avec le bouton droit de la souris puis en sélectionnant Générer les fichiers pureQueryXML. L'opération de cette étape se substitue à l'exécution manuelle de la commande wsdb2gen.
  4. Facultatif : Affichez les instructions SQL contenues dans vos fichiers pureQueryXML et prenez connaissance des informations qui leurs sont associées.
    Lorsque vous sélectionnez votre dossier de projet dans l'explorateur de packages ou l'un des fichiers de votre projet, la vue Structure SQL est remplie. Si la vue n'est pas ouverte, cliquez avec le bouton droit de la souris sur le projet et sélectionnez pureQuery > Afficher la structure SQL.
    • La page Base de données indique les objets de base de données auxquels les instructions SQL peuvent faire référence.
    • La page Java indique les fichiers Java contenant les instructions SQL. Si votre projet contient des fichiers source Java, vous pouvez cliquer deux fois sur une instruction SQL pour ouvrir le fichier source correspondant dans l'éditeur Java.
    • La page SQL fait apparaître les modules DB2 suggérés par le plan de travail pour les instructions SQL capturées. A ce stade, étant donné que vous n'avez pas encore effectué l'opération de définition des accès, la vue affiche uniquement les modules que le plan de travail créera consécutivement à cette opération.
  5. Facultatif : Editez les fichiers pureQueryXML pour votre application.
  6. 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.
  7. 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 redéfinir les accès pour ces fichiers.

    1. 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.

  8. Facultatif : 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.bindProps.
    2. Répétez l'opération de définition des accès.

    Vous pouvez encore éditer le source Java ou les instructions SQL dans votre application. Une fois cette édition terminée, supprimez vos fichiers pureQueryXML puis régénérez ces fichiers. Procédez ensuite à une nouvelle définition des accès.

  9. Exécutez votre application afin de la tester. Si les accès des instructions SQL de votre application sont définis au sein de la collection dans laquelle se trouvent les modules associés au pilote, il ne vous est pas nécessaire d'exécuter cette étape.

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 régénérer les fichiers pureQueryXML 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.

Commentaires