Sie können die mit Annotationen versehenen Methoden in mehreren Schnittstellen kombinieren, indem Sie diese Schnittstellen mit einer anderen Schnittstelle erweitern. Wenn Sie eine Bindung für die Erweiterungsschnittstelle ausführen, erstellt die Workbench ein DB2-Paket, das die SQL-Anweisungen aus der erweiterten Schnittstelle enthält.
Zum Erweitern der Schnittstellen verwenden Sie das Schlüsselwort extends.
Sie fügen der Erweiterungsschnittstelle außerdem die Annotation @PureQueryInterface hinzu.
Die Erweiterungsschnittstelle kann auch mit Annotationen versehene Methoden deklarieren. In diesem Fall enthält die Implementierungsklasse, die Sie für die Erweiterungsschnittstelle generieren, Definitionen der mit Annotationen versehenen Methoden, die in der Schnittstelle deklariert werden, sowie Definitionen der mit Annotationen versehenen Methoden, die in den erweiterten Schnittstellen deklariert werden.
Beispiel
Angenommen, Sie haben die folgenden Schnittstellen:
public interface SalesTeam {
@Select(sql="SELECT * FROM SALES")
List<SalesBean> getSalesEmployees();
}
public interface MarketingTeam {
@Select(sql="SELECT * FROM MARKETING")
List<MktBean> getMarketingEmployees();
}
Sie wollen die SQL-Anweisungen in diesen Schnittstellen in ein bestimmtes DB2-Paket binden.
Führen Sie dazu die folgenden Schritte aus:
- Erstellen Sie eine Schnittstelle, die SalesTeam und MarketingTeam erweitert.
In diesem Beispiel lautet der Name der Schnittstelle CombinedTeam und die Schnittstelle sieht wie folgt aus:
@PureQueryInterface
public interface CombinedTeam extends SalesTeam, MarketingTeam {
}
- Fügen Sie der Schnittstelle CombinedTeam die Annotation @PureQueryInterface hinzu.
- Generieren Sie die Implementierung für die Schnittstelle CombinedTeam, indem Sie die Schnittstelle speichern. Die Implementierung für CombinedTeam enthält Methoden, die in den Schnittstellen SalesTeam und MarketingTeam deklariert werden.
Diese Schnittstellen dürfen keine identischen mit Annotationen versehene Methoden enthalten.
Die Workbench generiert keine Implementierungen für die Schnittstellen SalesTeam und MarketingTeam.
Wenn Implementierungsklassen für diese Schnittstellen im Projekt vorhanden sind, löscht die Workbench sie nicht. Wenn Sie Änderungen an den Schnittstellen SalesTeam oder MarketingTeam vornehmen, generiert die Workbench die Implementierungsklasse für die Schnittstelle CombinedTeam neu.
Sechs mögliche Szenarien
Diese Szenarien zeigen das Verhalten der Workbench beim Erweitern von Schnittstellen, beim Entfernen von Erweiterungen aus Schnittstellen oder beim Löschen von Erweiterungsschnittstellen.
Die einzelnen Szenarien zeigen, was passiert, wenn das Kontrollkästchen Generierte Implementierungen wie Benutzercode behandeln ausgewählt bzw. nicht ausgewählt ist. Dieses Kontrollkästchen ist standardmäßig ausgewählt. Dies bedeutet, dass die Workbench niemals Implementierungsklassen löscht.
Klicken Sie mit der rechten Maustaste auf Ihr Java-Projekt und wählen Sie Eigenschaften aus, um dieses Kontrollkästchen anzuzeigen.
Erweitern Sie pureQuery im Fenster Eigenschaften und wählen Sie Eigenschaften aus.
Diese Szenarien verwenden die folgenden Schnittstellen:
- Schnittstelle A, die keine mit Annotationen versehenen Methoden deklariert.
- Schnittstellen B, Y und Z, die mit Annotationen versehene Methoden deklarieren.
- SZENARIO 1: Schnittstellen mit einer Schnittstelle erweitern, die keine mit Annotationen versehene Methoden deklariert
- Ihre Aktion
- Erstellen Sie die Schnittstellen Y und Z. Diese Schnittstellen deklarieren mit Annotationen versehene Methoden.
- Erstellen Sie Schnittstelle A so, dass sie die Schnittstellen Y und Z erweitert.
- Aktion der Workbench, wenn Sie angegeben haben, dass die Implementierungsklassen beibehalten werden sollen
- Behält die Implementierungsklassen für die Schnittstellen Y und Z bei, sofern welche vorhanden sind. Wenn Sie eine dieser Schnittstellen modifizieren, behält die Workbench die entsprechende Implementierungsklasse bei.
- Generiert die Implementierungsklassen für die Schnittstelle A. Diese Klasse definiert die mit Annotationen versehenen Methoden, die in den Schnittstellen Y und Z deklariert werden.
- Aktion der Workbench, wenn Sie nicht angegeben haben, dass die Implementierungsklassen beibehalten werden sollen
- Löscht die Implementierungsklassen für die Schnittstellen Y und Z, sofern welche vorhanden sind. Alle Änderungen, die Sie möglicherweise an diesen Klassen vorgenommen haben, gehen verloren.
- Generiert die Implementierungsklasse für die Schnittstelle A. Diese Klasse definiert die mit Annotationen versehenen Methoden, die in den Schnittstellen Y und Z deklariert werden.
- SZENARIO 2: Schnittstellen mit einer Schnittstelle erweitern, die mit Annotationen versehene Methoden deklariert
- Ihre Aktion
- Erstellen Sie die Schnittstellen Y und Z. Diese Schnittstellen deklarieren mit Annotationen versehene Methoden.
- Erstellen Sie die Schnittstelle B so, dass sie mit Annotationen versehene Methoden deklariert und die Schnittstellen Y und Z erweitert.
- Aktion der Workbench, wenn Sie angegeben haben, dass die Implementierungsklassen beibehalten werden sollen
- Behält die Implementierungsklassen für die Schnittstellen Y und Z bei, sofern welche vorhanden sind. Wenn Sie jedoch eine dieser Schnittstellen modifizieren, löscht die Workbench die entsprechende Implementierungsklasse.
- Generiert die Implementierungsklassen für die Schnittstelle B. Diese Klasse definiert die mit Annotationen versehenen Methoden, die in den Schnittstellen B, Y und Z deklariert werden.
- Aktion der Workbench, wenn Sie nicht angegeben haben, dass die Implementierungsklassen beibehalten werden sollen
- Löscht die Implementierungsklassen für die Schnittstellen Y und Z, sofern welche vorhanden sind. Alle Änderungen, die Sie möglicherweise an diesen Klassen vorgenommen haben, gehen verloren.
- Generiert die Implementierungsklasse für die Schnittstelle B. Diese Klasse definiert die mit Annotationen versehenen Methoden, die in den Schnittstellen Y und Z deklariert werden.
- SZENARIO 3: Schnittstellenerweiterungen einer Schnittstelle rückgängig machen, die keine mit Annotationen versehene Methoden deklariert
- Ihre Aktion
- Bearbeiten Sie die Schnittstelle A so, dass sie die Schnittstellen Y und Z nicht mehr erweitert oder nicht mehr die Annotation @PureQueryInterface enthält.
- Aktion der Workbench, wenn Sie angegeben haben, dass die Implementierungsklassen beibehalten werden sollen
- Behält die Implementierungsklasse für die Schnittstelle A bei.
- Aktion der Workbench, wenn Sie nicht angegeben haben, dass die Implementierungsklassen beibehalten werden sollen
- Löscht die Implementierungsklasse für die Schnittstelle A, da die Schnittstelle keine mit Annotationen versehene Methoden deklariert. Alle Änderungen, die Sie möglicherweise an dieser Klasse vorgenommen haben, gehen verloren.
Wenn die Workbench Implementierungsklassen für die Schnittstellen Y und Z generieren soll, müssen Sie in beiden Fällen einen der folgenden Schritte ausführen:
- Wählen Sie Projekt aus und stellen Sie sicher, dass die Option zum automatischen Erstellen ausgewählt ist. Bearbeiten und speichern Sie die Schnittstelle.
Ihre Bearbeitung kann eine geringfügige Änderung sein, wie z. B. das Hinzufügen eines Leerzeichens.
- Wählen Sie Projekt > Bereinigen aus, um Ihr Projekt zu erzeugen.
- SZENARIO 4: Schnittstellenerweiterungen einer Schnittstelle rückgängig machen, die mit Annotationen versehene Methoden deklariert
- Ihre Aktion
- Bearbeiten Sie die Schnittstelle B so, dass sie die Schnittstellen Y und Z nicht mehr erweitert oder nicht mehr die Annotation @PureQueryInterface enthält.
- Verhalten der Workbench, unabhängig davon, ob Sie angegeben haben, Implementierungsklassen beizubehalten
- Generiert die Implementierungsklasse für die Schnittstelle B erneut. Alle Änderungen, die Sie möglicherweise an der Implementierungsklasse vorgenommen haben, gehen verloren. Wenn die Workbench Implementierungsklassen für die Schnittstellen Y und Z generieren soll, müssen Sie in beiden Fällen einen der folgenden Schritte ausführen:
- Wählen Sie Projekt aus und stellen Sie sicher, dass die Option zum automatischen Erstellen ausgewählt ist. Bearbeiten und speichern Sie die Schnittstelle.
Ihre Bearbeitung kann eine geringfügige Änderung sein, wie z. B. das Hinzufügen eines Leerzeichens.
- Wählen Sie Projekt > Bereinigen aus, um Ihr Projekt zu erzeugen.
- SZENARIO 5: Schnittstelle löschen, die keine mit Annotationen versehene Methoden deklariert und Schnittstellen erweitert, die mit Annotationen versehene Methoden deklarieren
- Ihre Aktion
- Löschen Sie die Schnittstelle A, die keine mit Annotationen versehene Methoden deklariert und die Schnittstellen Y und Z erweitert.
- Aktion der Workbench, wenn Sie angegeben haben, dass die Implementierungsklassen beibehalten werden sollen
- Behält die Implementierungsklasse für die Schnittstelle A bei. Das Projekt weist jetzt jedoch einen Kompilierungsfehler auf.
- Aktion der Workbench, wenn Sie nicht angegeben haben, dass die Implementierungsklassen beibehalten werden sollen
- Löscht die Implementierungsklasse für die Schnittstelle A.
Wenn die Workbench Implementierungsklassen für die Schnittstellen Y und Z generieren soll, müssen Sie in beiden Fällen einen der folgenden Schritte ausführen:
- Wählen Sie Projekt aus und stellen Sie sicher, dass die Option zum automatischen Erstellen ausgewählt ist. Bearbeiten und speichern Sie die Schnittstelle.
Ihre Bearbeitung kann eine geringfügige Änderung sein, wie z. B. das Hinzufügen eines Leerzeichens.
- Wählen Sie Projekt > Bereinigen aus, um Ihr Projekt zu erzeugen.
- SZENARIO 6: Implementierungsklasse löschen, die mit Annotationen versehene Methoden deklariert und Schnittstellen erweitert, die ebenfalls mit Annotationen versehene Methoden deklarieren
- Ihre Aktion
- Löschen Sie die Schnittstelle B, die mit Annotationen versehene Methoden deklariert und die Schnittstellen Y und Z erweitert.
- Aktion der Workbench, wenn Sie angegeben haben, dass die Implementierungsklassen beibehalten werden sollen
- Behält die Implementierungsklasse für Schnittstelle B bei. Das Projekt enthält jetzt jedoch einen Kompilierungsfehler.
- Aktion der Workbench, wenn Sie nicht angegeben haben, dass die Implementierungsklassen beibehalten werden sollen
- Löscht die Implementierungsklasse für die Schnittstelle B.
Wenn die Workbench Implementierungsklassen für die Schnittstellen Y und Z generieren soll, müssen Sie in beiden Fällen einen der folgenden Schritte ausführen:
- Wählen Sie Projekt aus und stellen Sie sicher, dass die Option zum automatischen Erstellen ausgewählt ist. Bearbeiten und speichern Sie die Schnittstelle.
Ihre Bearbeitung kann eine geringfügige Änderung sein, wie z. B. das Hinzufügen eines Leerzeichens.
- Wählen Sie Projekt > Bereinigen aus, um Ihr Projekt zu erzeugen.