Dienstprogramm Generator

Das pureQuery-Dienstprogramm Generator generiert Implementierungsklassen für Schnittstellen, die mit Annotationen versehene Methoden deklarieren.

Dieses Thema ist in die folgenden Abschnitte unterteilt:

Eine Beschreibung der in den Diagrammen verwendeten Konventionen finden Sie in Syntaxdiagramme lesen.

Übersicht

Das pureQuery-Dienstprogramm Generator benötigt Parameter, die die zu verwendende Eclipse-Umgebung, die Datenbank, den JDBC-Treiber und die bei der Generierung einer Implementierungsklasse zu verwendende Schnittstelle angeben.

Das Dienstprogramm Generator analysiert den Inhalt der Eingabeschnittstellendatei und erstellt Java™-Code, der das Datenobjekt abfragt oder aktualisiert, auf das in den Annotationen @Select, @Update und @Call verwiesen wird. Es generiert den Code, mit dem die Ziel-Java-Bean in einer Abfrageoperation gefüllt wird, und verwendet den Inhalt der Java-Bean bei der Aktualisierung als Eingabedaten.

Viele pureQuery-Benutzer erstellen ihre Anwendungen mithilfe der Workbench. In dieser Umgebung wird der pureQuery-Generator automatisch für alle pureQuery-Schnittstellen für mit Annotationen versehene Methoden aufgerufen, die sich in einem Java-Projekt mit aktivierter pureQuery-Unterstützung befinden. Die Generierung von Schnittstellenimplementierungen findet während des normalen Erstellungsprozesses für Java-Projekte statt.

Sie können den pureQuery-Generator jedoch auch über eine Befehlszeile aufrufen. IBM® Data Studio Developer oder IBM Optim Development Studio muss installiert sein. Je nachdem, welches dieser beiden Produkte installiert ist, müssen Sie die folgenden JAR-Dateien im Systemklassenpfad oder JVM-Klassenpfad angeben, wenn Sie das Dienstprogramm Generator ausführen:

Das Dienstprogramm Generator startet Data Studio Developer oder Optim Development Studio nicht. Es nutzt lediglich die Infrastruktur und Plug-ins, die von diesen Produkten bereitgestellt werden.

Optionsdateien

Eine Optionsdatei listet die Schnittstelle(n) auf, die vom pureQuery-Dienstprogramm Generator verarbeitet werden soll(en), sowie die Optionen, die dem Generator mitteilen, wie die Schnittstellen zu verarbeiten sind. Sie können Standardoptionen definieren, die für alle in einer Optionsdatei auflisteten Schnittstellen gelten. Sie können außerdem Optionen für Schnittstellen definieren, sodass Sie die Standardoptionen überschreiben können, und andere Optionen definieren, die nur für einzelne Schnittstellen bestimmt sind.

Im Befehl für die Ausführung des Dienstprogramms Generator können Sie die zu verwendende Datei mit der Option -optionsFile angeben.

Eine einfache Optionsdatei für den pureQuery-Generator könnte beispielsweise wie folgt aussehen:
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 pass02 
In diesem Beispiel gibt die mit defaultOptions beginnende Zeile Folgendes an: den Treiber, der beim Herstellen der Verbindung zur Datenbank verwendet werden soll, die URL für die Verbindung zur Datenbank sowie den Benutzernamen und das Kennwort. Diese Einstellungen gelten für alle Schnittstellen, die in der Optionsdatei angegeben sind. Die für die ersten beiden Schnittstellen bestimmten Zeilen definieren nur Optionen für die betreffenden Schnittstellen.
Sie können außerdem Kommentare in Optionsdateien aufnehmen, indem Sie das Symbol # an den Anfang jeder Kommentarzeile stellen. Wenn dieses Symbol in dem Wert einer der Optionen enthalten sein soll, setzen Sie den Wert in doppelte Anführungszeichen:
-pkgVersion "ver#1"
Wenn Sie den Generator über eine Befehlszeile ausführen und eine Optionsdatei verwenden, erkennt pureQuery Optionen in folgender Reihenfolge:
  1. Optionen in der Befehlszeile
  2. Optionen für einzelne Schnittstellen in der angegebenen Optionsdatei
  3. Standardoptionen in der angegebenen Optionsdatei

Syntax für den Befehl zur Ausführung des Dienstprogramms Generator ohne Optionsdatei

Sie können auch nur der Befehl verwenden, wenn für alle angegebenen Schnittstellen dieselben Optionen verwendet werden sollen.

Syntaxdiagramm lesenSyntaxdiagramm überspringen
                                                                                    (1)   
>>-java--org.eclipse.core.launcher.Main-- -application--com.ibm.pdq.tools.Generator------>

>-- -data--temporärer_Arbeitsbereich---------------------------->

>-- -driverName--JDBC-Treiber----------------------------------->

>-- -url--Verbindungs-URL-- -username--Benutzer-ID-- -password--Kennwort-->

>--+------------------------+----------------------------------->
   |              .-FALSE-. |   
   '- -noCleanup--+-TRUE--+-'   

>-- -rootPath--Stammverzeichnispfad----------------------------->

>--+------------------------------+----------------------------->
   '- -userClasspath--Klassenpfad-'   

>--+-------------------------------------+---------------------->
   |               .-NULLID------------. |   
   '- -collection--+-Objektgruppenname-+-'   

>--+---------------------------------+-------------------------->
   '- -pkgVersion-- -+-AUTO--------+-'   
                     '-Versions-ID-'     

>--+--------------------------------------+--------------------->
   '- -rootPkgName--Stamm_des_Paketnamens-'   

>--+---------------------------------------+-------------------->
   |                             .-FALSE-. |   
   '- -forceSingleBindIsolation--+-TRUE--+-'   

>--+----------------------+--+-----------------------+---------->
   '- -xmlFile--XML-Datei-'  |                   (2) |   
                             '-| Traceoptionen |-----'   

                .---------------------------------.   
                V                                 |   
>-- -interface----Java-Paket.Schnittstelle.Klasse-+------------->

>--+--------------------------------------------+--------------><
   '- -baseDataOverride--Java-Paket.Klassenname-'   

Anmerkungen:
  1. Sie können die Optionen in beliebiger Reihenfolge angeben.
  2. Informationen zur Syntax finden Sie in der Beschreibung dieser Optionen.

Syntax für den Befehl zur Ausführung des Dienstprogramms Generator mit Optionsdatei

Sie können die Namen der Schnittstellen und die Optionen für die Erstellung der DB2-Pakete oder DBRM-Dateien über eine Optionsdatei angeben. Mit einer Optionsdatei können Sie unterschiedliche Optionen für die unterschiedlichen Schnittstellen angeben.

Wenn Sie die Workbench verwenden, können Sie in einer Optionsdatei (z. B. Datei Default.genProps) nur die Schnittstellen auflisten, für die Sie Optionen einzeln angeben wollen. Die Zeile defaultOptions gilt für alle Schnittstellen, die sich in einem Java-Projekt befinden.

Syntaxdiagramm lesenSyntaxdiagramm überspringen
                                                                                    (1)   
>>-java--org.eclipse.core.launcher.Main-- -application--com.ibm.pdq.tools.Generator------>

>-- -data--temporärer_Arbeitsbereich---------------------------->

>-- -driverName--JDBC-Treiber----------------------------------->

>-- -url--Verbindungs-URL-- -username--Benutzer-ID-- -password--Kennwort-->

>-- -optionsFile--Dateiname--+------------------------+--------->
                             |              .-FALSE-. |   
                             '- -noCleanup--+-TRUE--+-'   

>-- -rootPath--Stammverzeichnispfad----------------------------->

>--+------------------------------+----------------------------->
   '- -userClasspath--Klassenpfad-'   

>--+-----------------------+-----------------------------------><
   |                   (2) |   
   '-| Traceoptionen |-----'   

Anmerkungen:
  1. Sie können die Optionen in beliebiger Reihenfolge angeben.
  2. Informationen zur Syntax finden Sie in der Beschreibung dieser Optionen.

Die beiden letzten Syntaxdiagramme beschreiben, wie Einträge in Optionsdateien erstellt werden.

Syntax zur Angabe von Standardoptionen in einer Optionsdatei für das Dienstprogramm Generator

Dieses Syntaxdiagramm zeigt die Standardoptionen, die Sie für alle in einer Optionsdatei aufgeführten Schnittstellen festlegen können.

Syntaxdiagramm lesenSyntaxdiagramm überspringen
                     (1)                               
>>-defaultOptions--=------ -driverName--JDBC-Treiber------------>

>-- -url--Verbindungs-URL-- -username--Benutzer-ID-- -password--Kennwort-->

>--+------------------------+----------------------------------->
   |              .-FALSE-. |   
   '- -noCleanup--+-TRUE--+-'   

>-- -rootPath--Stammverzeichnispfad----------------------------->

>--+------------------------------+----------------------------->
   '- -userClasspath--Klassenpfad-'   

>--+-----------------------+------------------------------------>
   |                   (2) |   
   '-| Traceoptionen |-----'   

>--+-------------------------------------+---------------------->
   |               .-NULLID------------. |   
   '- -collection--+-Objektgruppenname-+-'   

>--+---------------------------------+-------------------------->
   '- -pkgVersion-- -+-AUTO--------+-'   
                     '-Versions-ID-'     

>--+---------------------------------------+-------------------->
   |                             .-FALSE-. |   
   '- -forceSingleBindIsolation--+-TRUE--+-'   

>--+----------------------+------------------------------------->
   '- -xmlFile--XML-Datei-'   

>--+--------------------------------------------+--------------><
   '- -baseDataOverride--Java-Paket.Klassenname-'   

Anmerkungen:
  1. Sie können die Optionen in beliebiger Reihenfolge angeben.
  2. Informationen zur Syntax finden Sie in der Beschreibung dieser Optionen.

Syntax zum Überschreiben von Standardoptionen in einer Optionsdatei für das Dienstprogramm Generator

Dieses Syntaxdiagramm zeigt die Optionen, die Sie für jede in einer Optionsdatei aufgeführte Schnittstelle festlegen können.

Syntaxdiagramm lesenSyntaxdiagramm überspringen
                               (1)   
>>-Java-Paket.Schnittstelle--=---------------------------------->

>-- -driverName--JDBC-Treiber----------------------------------->

>-- -url--Verbindungs-URL-- -username--Benutzer-ID-- -password--Kennwort-->

>--+-------------------------------------+---------------------->
   |               .-NULLID------------. |   
   '- -collection--+-Objektgruppenname-+-'   

>--+---------------------------------+-------------------------->
   '- -pkgVersion-- -+-AUTO--------+-'   
                     '-Versions-ID-'     

>--+--------------------------------------+--------------------->
   '- -rootPkgName--Stamm_des_Paketnamens-'   

>--+---------------------------------------+-------------------->
   |                             .-FALSE-. |   
   '- -forceSingleBindIsolation--+-TRUE--+-'   

>--+----------------------+------------------------------------->
   '- -xmlFile--XML-Datei-'   

>--+--------------------------------------------+--------------><
   '- -baseDataOverride--Java-Paket.Klassenname-'   

Anmerkungen:
  1. Sie können die Optionen in beliebiger Reihenfolge angeben.

Beschreibungen der Optionen

-baseDataOverride Java-Paket.Klassenname
Ermöglicht das Festlegen eines Namens einer Java-Klasse, die die generierte Implementierungsklasse erweitert. Generierte Implementierungsklassen erweitern standardmäßig die Klasse com.ibm.pdq.runtime.generator.BaseData. Durch das Angeben Ihrer eigenen Klasse können Sie die generierte Implementierungsklasse mit Ihren eigenen Methoden erweitern.
-collection Objektgruppenname
Verwenden Sie diese Option, die die Entwicklung von Anwendungen unterstützt, die statisches SQL verwenden, wenn Sie vorhaben, das Dienstprogramm StaticBinder später auszuführen. Diese Option gibt das Qualifikationsmerkmal für die Pakete an, die das pureQuery-Dienstprogramm StaticBinder bindet. Das Qualifikationsmerkmal muss die Integritätsbedingungen für Objektgruppennamen für die von Ihnen verwendete DB2-Datenbank erfüllen.
Wenn Sie diesen Parameter nicht angeben, nimmt er standardmäßig den Wert NULLID an.
-data Pfad
Gibt den absoluten Pfad eines temporären Eclipse-Arbeitsbereichs an, den das Dienstprogramm Generator verwenden kann.
-driverName Name
Der Name des JDBC-Treibers, der zum Herstellen einer Verbindung zur Datenbank verwendet werden soll.
-forceSingleBindIsolation TRUE | FALSE
Gibt an, ob Sie vorhaben, ein DB2-Paket für nur eine einzige Isolationsstufe zu erstellen, und dass daher zum Angeben der Isolationsstufe keine Nummer an den Namen des Pakets angehängt werden soll. Der Standardwert ist FALSE, d. h., dass eine Nummer angehängt wird.
Verwenden Sie diese Option zusammen mit der Option -isolationLevel des Dienstprogramms StaticBinder.

Wenn Sie eine einzelne Anweisungsgruppe mithilfe der Option -isolationLevel in zwei oder drei verschiedene Pakete binden wollen, von denen jedes eine andere Isolationsstufe aufweist, dürfen Sie die Option -forceSingleBindIsolation nicht angeben, wenn Sie das Konfigurationsdienstprogramm für die pureQueryXML-Datei ausführen, die die Anweisungsgruppe enthält.

Nehmen wir beispielsweise an, dass Sie die folgenden beiden Einträge in eine Optionsdatei für das Dienstprogramm StaticBinder aufgenommen haben:

C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel UR
C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel CS

Wenn Sie für die Ausführung des Konfigurationsdienstprogramms für die Datei captureFile.pdqxml die Option -forceSingleBindIsolation verwendet haben, führt das Dienstprogramm StaticBinder Folgendes aus:

  1. Binden des Pakets MYPKGA mit der Isolationsstufe UR.
  2. Erneutes Binden des Pakets MYPKGA mit der Isolationsstufe CS.

Das Ergebnis ist ein einzelnes Paket MYPKGA, das mit der Isolationsstufe CS gebunden ist.

Wenn Sie als Ergebnis zwei Pakete MYPKGA wollen, von denen das eine die Isolationsstufe UR und das andere die Isolationsstufe CS aufweist, dürfen Sie die Option -forceSingleBindIsolation nicht angeben, wenn Sie das Konfigurationsdienstprogramm für die Datei captureFile.pdqxml ausführen.

-interface Java-Paket.Schnittstellenklasse
Der Name der kompilierten Schnittstelle, für die das pureQuery-Dienstprogramm Generator eine Implementierungsklasse erstellen soll. Der Name muss vollständig mit dem Namen des Java-Pakets qualifiziert sein, in dem sich die Klasse befindet.
Java-Paket.Schnittstelle (am Zeilenanfang in einer Optionsdatei)
Gibt an, dass die Optionen in der Zeile nur für die SQL-Anweisungen in der angegebenen Schnittstelle gelten. Diese Optionen setzen Optionen außer Kraft, die Sie als Standardwerte angeben.
Sie müssen den Namen der Schnittstelle mit dem Namen des Java-Pakets qualifizieren, zu dem die Schnittstelle gehört.
-noCleanup TRUE|FALSE
Wenn das pureQuery-Dienstprogramm Generator ein Java-Projekt im angegebenen Eclipse-Arbeitsbereich erstellen muss, gibt diese Option an, ob das pureQuery-Dienstprogramm Generator das Java-Projekt nach dem Generieren der Implementierung löschen soll.
TRUE
Das pureQuery-Dienstprogramm Generator löscht das Java-Projekt nicht.
FALSE
Das pureQuery-Dienstprogramm Generator löscht das Java-Projekt. Dies ist der Standardwert.
-optionsFile Dateiname
Der Name der Datei, einschließlich ihres absoluten oder relativen Pfads, in der die Schnittstellen aufgelistet werden, für die Sie Implementierungsklassen generieren wollen.
Eine Optionsdatei kann eine Gruppe von Standardoptionen sowie eine Liste von Schnittstellen mit einer Gruppe von Optionen für jede Schnittstelle enthalten. Wenn Sie eine Optionsdatei angeben, können Sie auch einige Optionen über die Befehlszeile angeben. Als Standardoptionen angegebene Optionen werden für eine Schnittstelle verwendet, außer wenn sie von Optionen überschrieben werden, die speziell für diese Schnittstelle aufgeführt oder über die Befehlszeile angegeben werden.
-password Kennwort
Das Kennwort, das zum Herstellen einer Verbindung zur Datenquelle verwendet werden soll.
-pkgVersion AUTO|Versions-ID
Verwenden Sie diese Option, die die Entwicklung von Anwendungen unterstützt, die statisches SQL verwenden, wenn Sie vorhaben, das Dienstprogramm StaticBinder später auszuführen. Diese Option gibt die Paketversion an, die beim Binden von Paketen verwendet werden soll.

Für DB2 ist es zulässig, dass mehrere Versionen eines Pakets gleichzeitig vorhanden sind. Somit können Sie neue Pakete binden, ohne ältere Versionen von Paketen mit demselben Namen ersetzen zu müssen. Wenn bei neuen Paketen Probleme auftreten, können Sie eine ältere Version dieses Pakets verwenden.

Wenn Sie diese Option nicht angeben, werden Datenbankpakete, die aus nachfolgenden Bindevorgängen resultieren, ohne eine Version erstellt.

AUTO
Gibt an, dass die Version unter Verwendung der aktuellen Zeitmarke automatisch generiert wird.
Versions-ID
Gibt die Versions-ID für ein Paket an. Die Zeichenfolge muss für die von Ihnen verwendete Version von DB2 gültig sein.

Die Prüfung der Version während der Laufzeit basiert auf dem Konsistenztoken, nicht auf dem Versionsnamen.

-rootPkgName Stamm_des_Paketnamens
Verwenden Sie diese Option, die die Entwicklung von Anwendungen unterstützt, die statisches SQL verwenden, wenn Sie vorhaben, das Dienstprogramm StaticBinder später auszuführen. Diese Option gibt den Stamm des Namens an, der für DB2-Pakete verwendet werden soll. Wenn Sie Pakete erstellen und binden, werden an diesen Namen Ziffern angehängt, die die Isolationsstufen angeben. An die Pakete werden die vollständigen Namen (Stamm des Namens plus Ziffer für die Isolationsstufe) vergeben. Stamm_des_Paketnamens muss den Integritätsbedingungen entsprechen, die von der von Ihnen verwendeten DB2-Datenbank festgelegt werden.

Wenn Sie vorhaben, mit dem pureQuery-DienstprogrammStaticBinder DBRM-Dateien zu generieren anstatt DB2-Pakete zu erstellen, muss Stamm_des_Paketnamens in Großbuchstaben geschrieben sein und darf nicht länger als 7 Zeichen sein. Wenn Sie mit dem Dienstprogramm StaticBinder eine DBRM-Datei generieren und die Kombination aus Stamm_des_Paketnamens und den zusätzlichen Zeichen für die Isolationsstufe länger als 7 Zeichen ist, gibt das Dienstprogramm StaticBinder eine Ausnahmebedingung aus.

Da Paketnamen innerhalb einer Datenbank eindeutig sein müssen, können Sie einen Stammpaketnamen nicht für mehr als eine Schnittstelle angeben. Sie können einen Stammpaketnamen über die Befehlszeile angeben, wenn Sie dort genau eine Schnittstelle angeben. Sie können einen Stammpaketnamen für Schnittstellen auch in einer Optionsdatei angeben. Dies darf aber nicht als Teil der defaultOptions-Zeile erfolgen.

-rootPath Stammverzeichnispfad
Der absolute Pfad zum Verzeichnis, das die Schnittstellen enthält, die vom Dienstprogramm Generator verarbeitet werden sollen.

Das Verzeichnis könnte zum Beispiel C:\user\app1\ sein. Innerhalb dieses Verzeichnisses befänden sich die Verzeichnisse, die Java-Paketen entsprechen, beispielsweise C:\user\app1\com\myCompany\.

Mit der Option -interface des Dienstprogramms Generator geben Sie den Namen der Schnittstelle an, die vom Dienstprogramm verarbeitet werden soll, wobei der Name mit dem Namen des Pakets qualifiziert wird, wie im folgenden Beispiel gezeigt: com.myCompany.MyInterface

Die Schnittstelle muss die Fähigkeit zum Kompilieren besitzen.

Das Dienstprogramm Generator generiert eine Implementierungsklasse in demselben Verzeichnis wie die entsprechende Schnittstelle. Deshalb wird jede Implementierungsklasse in demselben Java-Paket erstellt wie die zugehörige Schnittstelle.

Wenn Sie das pureQuery-Dienstprogramm Generator ausführen, wobei -rootPath auf C:\user\app1\ und -interface auf com.myCompany.MyInterface gesetzt ist, generiert das Dienstprogramm die Klasse MyInterfaceImpl.java im Verzeichnis C:\user\app1\com\myCompany\. Der vollständig qualifizierte Name der Klasse ist com.myCompany.MyInterfaceImpl.

Wenn Sie die Option -rootPath nicht verwenden, verwendet das pureQuery-Dienstprogramm Generator das aktuelle Arbeitsverzeichnis.

Traceoptionen
Sie können die Datei, in der Nachrichten protokolliert werden sollen, und die zu protokollierende Informationsebene angeben.
Syntaxdiagramm lesenSyntaxdiagramm überspringen
>>-+------------------------+--+---------------------------+---><
   '- -traceFile--Dateiname-'  |               .-OFF-----. |   
                               '- -traceLevel--+-ALL-----+-'   
                                               +-SEVERE--+     
                                               +-WARNING-+     
                                               +-INFO----+     
                                               +-CONFIG--+     
                                               +-FINE----+     
                                               +-FINER---+     
                                               '-FINEST--'     

-traceFile Dateiname
Gibt den absoluten oder relativen Pfad und den Namen der Datei an, die zum Protokollieren von Informationen zur Operation verwendet werden soll.
Falls die Datei bereits vorhanden ist, hängt pureQuery neue Nachrichten an den vorhandenen Inhalt der Datei an. Standardmäßig werden die Einträge in 'System.err' geschrieben.
-traceLevel OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST|ALL
Gibt den zu protokollierenden Informationstyp an. Die Standardstufe ist OFF. Wenn Sie keine Datei angeben, in die die Protokolleinträge geschrieben werden sollen, und Sie diese Option auf einen anderen Wert als OFF setzen, werden die Einträge in 'System.err' geschrieben.
-url Verbindungs-URL
Die JDBC-Typ-4-URL für die Verbindung zur Datenbank.
-username Benutzer-ID
Die Benutzer-ID, die zum Herstellen einer Verbindung zur Datenquelle verwendet werden soll.
-userClasspath Klassenpfad
Gibt einen Klassenpfad an, der die Pfade von pdq.jar, pdqmgmt.jar - den JAR-Dateien für Ihren JDBC-Treiber - und allen anderen JAR- oder Klassendateien bereitstellt, die pureQuery zum Auflösen aller Klassendateiabhängigkeiten in den Schnittstellen benötigt.
-xmlFile XML-Datei
Der Name der XML-Konfigurationsdatei, die SQL enthält, die die SQL in den Methoden angibt oder überschreibt, die in der Schnittstelle definiert sind. Eine XML-Konfigurationsdatei kann auch die Definitionen der entsprechenden Beans überschreiben.

Feedback