Dieses Thema ist in die folgenden Abschnitte unterteilt:
Eine Beschreibung der in den Diagrammen verwendeten Konventionen finden Sie in Syntaxdiagramme lesen.
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. Der pureQuery-Generator wird automatisch für alle pureQuery-Schnittstellen für mit Annotationen versehenen 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 ausführen. IBM® Data Studio, IBM Optim Development Studio oder IBM Data Studio Developer muss installiert sein. Je nachdem, welches dieser 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 das Produkt nicht. Es verwendet die Infrastuktur und die Plug-ins, die von diesen Produkten bereitgestellt werden.
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.
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 pass02In 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 Schnittstellen spezifischen Zeilen definieren nur die Optionen für die betreffenden Schnittstellen.
-pkgVersion "ver#1"
In einer Optionsdatei können Sie einen Eintrag erstellen, der die Generierungseigenschaften angibt, die auf eine Gruppe von Java-Schnittstellen angewendet werden. Sie erstellen eine Zeile, die mit groupOptions.Gruppenname beginnt. Die Gruppenkennung ist der Wert von Gruppenname. Gruppenname ist die Zeichenfolge, die einer Schnittstelle mit der pureQuery-Annotation @Group hinzugefügt wird.
@Group ("Payroll") public Interface CalculateTax { … }Wenn der folgende Eintrag groupOptions.Payroll in einer Optionsdatei angegeben ist, generiert das Dienstprogramm Generator Implementierungsklassen für die Schnittstelle CalculateTax mit den angegebenen Optionseinstellungen.
groupOptions.Payroll= -collection Payroll -url "jdbc:db2://com.prod.hr:50000/DB01"Informationen zur Annotation @Group finden Sie in Schnittstellenverarbeitung durch pureQuery-Dienstprogramme steuern.
Sie können auch nur der Befehl verwenden, wenn für alle angegebenen Schnittstellen dieselben Optionen verwendet werden sollen.
(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-' >--+-----------------------------------------+------------------> | .-INTERFACE---------. | '- -rootPkgPattern--+-INTERFACE_JAVAPKG-+-' '-JAVAPKG_INTERFACE-' >--+-----------------------------------------------+------------> '- -rootPkgExclusion--="--pureQueryXML-Datei--"-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+----------------------+--+-----------------------+----------> '- -xmlFile--XML-Datei-' | (2) | '-| Traceoptionen |-----' .---------------------------------. V | >-- -interface----Java-Paket.Schnittstelle.Klasse-+-------------> >--+--------------------------------------------+---------------> '- -baseDataOverride--Java-Paket.Klassenname-' >--+---------------------------+------------------------------->< | .-AUTO-. | '- -lineSeparator--+-CRLF-+-' +-CR---+ '-LF---'
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 defaultOptions-Zeile gilt für alle Schnittstellen, die sich in einem Java-Projekt befinden.
(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) | | .-AUTO-. | '-| Traceoptionen |-----' '- -lineSeparator--+-CRLF-+-' +-CR---+ '-LF---'
Die beiden letzten Syntaxdiagramme beschreiben, wie Einträge in Optionsdateien erstellt werden.
Dieses Syntaxdiagramm zeigt die Standardoptionen, die Sie für alle in einer Optionsdatei aufgeführten Schnittstellen festlegen können.
(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-' >--+---------------------------+------------------------------->< | .-AUTO-. | '- -lineSeparator--+-CRLF-+-' +-CR---+ '-LF---'
Dieses Syntaxdiagramm zeigt die Optionen, die Sie für jede in einer Optionsdatei aufgeführte Schnittstelle festlegen können.
(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-' >--+---------------------------+------------------------------->< | .-AUTO-. | '- -lineSeparator--+-CRLF-+-' +-CR---+ '-LF---'
Dieses Syntaxdiagramm zeigt die Optionen an, die Sie für Schnittstellen festlegen können und die auf eine Gruppe von Java-Schnittstellen mit der Gruppen-ID Gruppenname angewendet werden. Gruppenname wird einer Schnittstelle mit der pureQuery-Anmerkung @Group zugeordnet. Beim Wert von Gruppenname muss die Groß-/Kleinschreibung beachtet werden. Für jeden Wert von Gruppenname ist nur ein Eintrag groupOptions in der Optionsdatei zulässig.
Die Eigenschaft -rootPkgName kann nicht als Option angegeben werden.
(1) >>-+-----------------------------------+------------------------> '-groupOptions--.--Gruppenname--=---' >-- -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-' >--+---------------------------+------------------------------->< | .-AUTO-. | '- -lineSeparator--+-CRLF-+-' +-CR---+ '-LF---'
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 Dienstprogramm Configure 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 Dienstprogramms Configure für die Datei captureFile.pdqxml die Option -forceSingleBindIsolation verwendet haben, führt das Dienstprogramm StaticBinder Folgendes aus:
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 Dienstprogramm Configure für die Datei captureFile.pdqxml ausführen.
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.
Die Prüfung der Version während der Laufzeit basiert auf dem Konsistenztoken, nicht auf dem Versionsnamen.
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.
Diese Option kann nicht mit der Option -rootPkgPattern angegeben werden.
Diese Option kann mit der Option -rootPkgExclusion angegeben werden, um die vom Dienstprogramm StaticBinder erstellten DB2-Paketnamen zu steuern.
Beim Erstellen des Stammpaketnamens aus einem Java-Paketnamen wird der Punkt als Begrenzungszeichen durch ein Unterstreichungszeichen ersetzt.
Wenn die Gesamtlänge des Pfads für das Java-Paket plus dem Schnittstellennamen größer als der maximal für die Datenbank zulässige Wert minus 1 ist, wird ein Fehler ausgegeben und das Paket wird nicht gebunden.
Wenn der Schnittstellenname com.acme.payroll.report.monthly.CommissionData ist, finden Sie in der folgenden Tabelle den generierten Stammpaketnamen für die Werte der Option -rootPkgPattern:
Optionswert für -rootPkgPattern | Erstellter DB2-Stammpaketname |
---|---|
INTERFACE | CommissionData |
INTERFACE_JAVAPKG | CommissionData_com_acme_payroll_report_monthly |
JAVAPKG_INTERFACE | com_acme_payroll_report_monthly_CommissionData |
JAVAPKG_INTERFACE unter Angabe der Option -rootPkgExclusion="com.acme | payroll_report_monthly_CommissionData |
Paketpräfix gibt einen durch Punkt begrenzten Namen an, der den ersten Teil des Java-Paketnamens bezeichnet.
Wenn z. B. alle Java-Paketnamen in einem Projekt mit com.acme beginnen, können Sie mit dieser Option diesen überzähligen Teil aus den generierten Paketnamen entfernen. Wenn der Java-Paketname bei der Generierung nicht mit der angegebenen Zeichenfolge beginnt, versucht das Dienstprogramm, den vollständigen Java-Paketnamen zu verwenden.
Wenn z. B. der Java-Schnittstellenname com.acme.payroll.report.monthly.CommissionData ist und die Option -rootPkgExclusion="com.acme" angegeben wird, wird die Zeichenfolge com.acme bei der Erstellung des DB2-Stammpaketnamens ausgeschlossen.
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.
>>-+------------------------+--+---------------------------+--->< '- -traceFile--Dateiname-' | .-OFF-----. | '- -traceLevel--+-ALL-----+-' +-SEVERE--+ +-WARNING-+ +-INFO----+ +-CONFIG--+ +-FINE----+ +-FINER---+ '-FINEST--'