pureQuery Runtime automatisiert die Erstellung und die Füllung von Java-Objekten, die Ergebnisse aus SQL-Abfragen mit Tabellenjoins zurückgeben. Eine Gruppe von verschachtelten Beans stellt die von der SQL-Abfrage zurückgegebenen Daten dar.
Die Hierarchie der Beans entspricht der relationalen Struktur der Tabellen und Daten in der Datenbank. pureQuery Runtime verarbeitet auch die Daten aus der Abfrage. In den meisten Fällen werden die erforderlichen ResultHandler- und RowHandler-Objekte für DAO-Schnittstellen und integrierte Methoden generiert.
Mit pureQuery Runtime können die verschachtelten Beans Daten mit Eins-zu-viele- und Eins-zu-eins-Beziehungen zurückgeben und Viele-zu-viele- und Viele-zu-eins-Beziehungen simulieren.
pureQuery Runtime unterstützt die automatische Generierung einer verschachtelten Bean-Struktur aus den Ergebnissen einer SQL-Abfrage, die Daten aus mehreren Tabellen verknüpft. Die Daten aus jeder übereinstimmenden Zeile in jeder verknüpften Tabelle werden im ResultSet-Objekt zu einer einzigen Datenzeile kombiniert.
Dadurch dass eine Bean ein java.util.List-Objekt anderer Beans enthalten darf, kann eine Bean mehrere Datenzeilen aus dem ResultSet-Objekt enthalten.
Die Verschachtelung bewahrt die Hierarchie der Daten in mehreren Tabellen und implementiert eine Eins-zu-viele-Beziehung. Dadurch dass eine Bean eine andere Bean enthalten kann, wird das Layout einer Bean vereinfacht und eine Eins-zu-eins-Beziehung implementiert.
Viele-zu-viele-Beziehungen können mit mehreren Eins-zu-viele-Beziehungen und Viele-zu-eins-Beziehungen mit mehreren Eins-zu-eins-Beziehungen simuliert werden.
Sie können eine Bean-Klasse mit mehreren SQL-Anweisungen verwenden. Im folgenden Szenario wird beschrieben, wie dieselben Beans in unterschiedlichen Situationen verwendet werden können:
- Die Bean 'Department' könnte eine Liste von Employee-Beans für diese Abteilung sowie eine Liste von Project-Beans für diese Abteilung enthalten.
- Die Bean 'Employee' könnte eine Liste von Project-Beans, die dem jeweiligen Mitarbeiter gehören, sowie eine Liste von Activity-Beans enthalten, an denen der Mitarbeiter mitwirkt.
- Die Bean 'Project' könnte eine Liste von Employee-Beans für die Mitarbeiter enthalten, die an diesem Projekt mitarbeiten. Sie könnte eine Bean 'Employee' enthalten, die die Informationen des Projektleiters enthält. Außerdem könnte sie eine Liste von Activity-Beans enthalten, die alle Aktivitäten im Projekt beschreiben.
- Die Bean 'Activity' könnte Informationen zu einem Projekt und eine Liste von Projekten enthalten, in denen die Aktivität zum Einsatz kam.
- Die Wiederverwendung dieser Beans erfolgt durch verschiedene SQL-Abfragen, die unterschiedliche Informationen im ResultSet-Objekt enthalten. Beispiele für diese SQL-Abfragen sind:
- Join-SQL-Abfrage, die Abteilungstabellenspalten, Mitarbeitertabellenspalten und Projekttabellenspalten verknüpft. Mit der Bean 'Department' als übergeordneter Bean ergäbe sich mindestens eine Bean 'Department'. Jede Bean 'Department' enthält eine Liste aller Mitarbeiter für diese Abteilung sowie eine Liste von Projekten für diese Abteilung.
- Join-SQL-Abfrage, die Mitarbeitertabellenspalten, Projekttabellenspalten und Aktivitätstabellenspalten verknüpft. Mit der Bean 'Employee' als übergeordneter Bean ergäbe sich mindestens eine Bean 'Employee'. Jede Bean 'Employee' enthält eine Liste von Projekten für diesen Mitarbeiter sowie eine Liste von Activity-Beans, an denen der Mitarbeiter mitwirkt.
- Join-SQL-Abfrage, die die Projekttabellenspalten und Aktivitätstabellenspalten verknüpft. Mit der Bean 'Project' als übergeordneter Bean ergäbe sich mindestens eine Bean 'Project'. Jede Bean 'Project' enthält eine Liste von Activity-Beans für ein Projekt.
- Join-SQL-Abfrage, die die Aktivitätstabellenspalten und Projekttabellenspalten verknüpft. Mit der Bean 'Activity' als übergeordneter Bean ergäbe sich mindestens eine Bean 'Activity'. Jede Bean 'Activity' enthält eine Liste von Project-Beans, in denen die Aktivität zum Einsatz kommt.