Übersicht über DAO-Schnittstellen und mit Annotationen versehene Methoden

Wenn Sie mit Annotationen versehene Methoden erstellen, können Sie SQL-Abfragen, UPDATE-Anweisungen oder CALL-Anweisungen in Annotationen für Methoden codieren, die Sie in Ihrer eigenen Schnittstelle definieren. Sie können mit den mit Annotationen versehenen Methoden DOA-Schnittstellen (Data Access Object - Datenzugriffsobjekt) definieren.

Mit Annotationen versehene Methoden bieten folgende Vorteile:

SQL in Annotationen für Methoden in angepassten Schnittstellen definieren

Sie können eine angepasste Schnittstelle erstellen, die dem DAO-Muster folgt, indem Sie eine Schnittstelle schreiben, die Datenzugriffsobjekte erstellt. Wenn Sie die Schnittstelle fertig geschrieben haben, können Sie das pureQuery-Dienstprogramm Generator ausführen, um die Definition einer Klasse zu generieren, die die Schnittstelle implementiert. Beim Schreiben von Code für Ihre Anwendung können Sie Instanzen dieser Implementierungsklasse erstellen und anschließend die Methoden aufrufen, die in dieser Instanz implementiert sind. Sie können Java™-Objekte, -Beans und -Objektgruppen verwenden, um Parameter für Ihre Methoden bereitzustellen und die Ergebnisse der Abfragen zu erhalten.

Folgende Methode verwendet z. B. eine Annotation @Select und könnte in einer Schnittstelle mit dem Namen CustomerQuery auftreten, in der Sie Methoden zum Abfragen und Aktualisieren von Datensätzen in einer Tabelle mit dem Namen CUSTOMER definieren.

@Select(sql="SELECT CUSTID, NAME FROM CUSTOMER WHERE REGION = ?1") 
List<Customer> getCustomersInRegion(int r);

Nachdem Sie die Schnittstelle kompiliert und mithilfe des pureQuery-Dienstprogramms Generator eine Klasse mit dem Namen CustomerQueryImpl erstellt haben, die die Schnittstelle implementiert, kann eine Anwendung die Methode aufrufen und die Abfrageergebnisse aus der zurückgegebenen Liste abrufen.

Connection con = DriverManager.getConnection(...);
CustomerQuery cQuery = DataFactory.getData(CustomerQuery.class, con);

int region = 123;

List<Customer> customersInRegion = cQuery.getCustomersInRegion(region);

Der Code führt die folgenden Schritte aus:

  1. Stellt eine Verbindung zur Datenbank her.
  2. Erstellt eine Instanz von CustomerQuery.
  3. Erstellt und initialisiert die Variable region.
  4. Ruft die Methode cQuery.getCustomersInRegion() auf und gibt das Ergebnis in einer neuen Liste mit Customer-Objekten aus.

Beachten Sie, dass sich der Code direkt auf die Schnittstelle CustomerQuery und nicht auf die Implementierungsklasse bezieht. Sie können Ihre Anwendungen ohne Abhängigkeit von der generierten Implementierungsklasse kompilieren.

SQL-Anweisungen in XML-Dateien definieren

Sie können die SQL-Anweisungen in den Annotationen zu den in einer Schnittstelle definierten Methoden mithilfe einer XML-Datei überschreiben. Sie stellen die SQL-Anweisungen in der XML-Datei bereit und übergeben diese Datei dem pureQuery-Dienstprogramm Generator, wenn Sie die Implementierungsklasse für die Schnittstelle generieren. So können Sie Schnittstellen in mehreren Anwendungen verwenden, wenn diese Anwendungen unterschiedlichen Datenbanken zugeordnet sind.

Sie könnten z. B. eine Anwendung haben, die mit einer DB2-Datenbank arbeitet, und eine ähnliche Anwendung, die mit einer Oracle-Datenbank arbeitet. Eine Schnittstelle mit dem Namen Customer könnte SQL-Anweisungen enthalten, die zu der DB2-Datenbank kompatibel sind. Zur Wiederverwendung der Schnittstelle für die zweite Anwendung würden Sie dem pureQuery-Dienstprogramm Generator beim Generieren der Implementierungsklasse für die Schnittstelle Customer eine XML-Datei mit SQL-Anweisungen übergeben, die zu der Oracle-Datenbank kompatibel sind.


Feedback