Hinweise zu Vorausleseschemata

Mit Vorausleseschemata können Anwendungen die Anzahl der Suchläufe in der Datenbank minimieren. In einer Abfrage wird eine aktive Gruppe von CMP-Beans für die Transaktion abgerufen. Beim Vorauslesen werden die angeforderten CMP-Beans aktiviert und die Daten für die zugehörigen Beans zwischengespeichert. Dadurch wird sichergestellt, dass die Daten für die Beans vorhanden sind, die wahrscheinlich als nächste von der Anwendung benötigt werden. Ein Hinweis für Vorauslesen (Read-Ahead-Hint) ist eine Darstellung der zugehörigen Beans, die gelesen werden müssen. Der Hinweis wird einer findByPrimaryKey-Methode für den angeforderten Bean-Typ zugeordnet, der eine mit EJB 2.x kompatible CMP-Entity-Bean angegeben muss.

Ein Hinweis für Vorauslesen wird in Form einer Zeichenfolge angegeben. Sie müssen die Zeichenfolge nicht angeben. Der Assistent generiert die Zeichenfolge auf der Basis der CMRs (Container-Managed Relationships), die für die Bean definiert sind. Das Beispiel in diesem Abschnitt dient nur der ergänzenden Information. Nehmen Sie an, eine CMP-Bean des Typs A enthält eine Finder-Methode, die Instanzen der Bean A zurückgibt. Für diese Methode wird der folgende Hinweis für Vorauslesen angegeben: RelB.RelC; RelD.

Diese Angabe ist wie folgt zu interpretieren:
  • Bean-Typ A hat eine CMR mit den Bean-Typen B und D.
  • Bean-Typ B hat eine CMR mit Bean-Typ C.

Für jede Bean des Typs A, die von der Datenbank abgerufen wird, werden auch die direkt zugehörigen B- und D-Beans sowie die indirekt zugehörigen C-Beans abgerufen. Die Reihenfolge der abgerufenen Bean-Datenspalten in jeder Zeile der Ergebnismenge entspricht der Reihenfolge im Hinweis für Vorauslesen: eine A-Bean, eine B-Bean (oder null), eine C-Bean (oder null), eine D-Bean (oder null). Für Hinweise für Vorauslesen, in denen dieselbe Beziehung mehrfach definiert ist, z. B. RelB.RelC;RelB.RelE, werden die Datenspalten einer Bean nur einmal angezeigt und zwar an der Position, an der sie zuerst im Hinweis angegeben ist.

Die in der Angabe enthaltenen Token, z. B. RelB, müssen die Namen von CMR-Feldern für die Beziehungen sein, die im Implementierungsdeskriptor der Bean definiert sind. In indirekten Beziehungen wie RelB.RelC ist "RelC" der Name eines CMR-Feldes im Implementierungsdeskriptor der Bean vom Typ B definiert.

Ein Hinweis für Vorauslesen kann jeweils nur in einer Beziehung auf einen Bean-Typ verweisen. Beispiel: Wenn eine Bean "Department" (Abteilung) eine Beziehung employees (Mitarbeiter) mit der Bean "Employee" und außerdem eine Beziehung Manager mit der Bean "Employee" hat, dürfen im Hinweis für Vorauslesen employees und manager nicht gleichzeitig definiert sein.

Weitere Informationen zum Festlegen von Hinweisen für Vorauslesen finden Sie in der Dokumentation zu Rational Application Developer.

Laufzeitverhalten von Hinweisen für Vorauslesen

Beachten Sie beim Entwickeln von Hinweisen für Vorauslesen die folgenden Tipps und Einschränkungen:
  • Hinweise für Vorauslesen in langen bzw. komplexen Pfaden kann zu einer Abfrage führen, die zu komplex ist, um nützlich zu sein. Hinweise für Vorauslesen bei Vererbungszuordnungen im Root- oder Leaf-Bereich muss mit besonderer Vorsicht gehandhabt werden. Addieren Sie die Anzahl der Tabellen, die für einen Preload für Vorauslesen zu erwarten ist, um die Komplexität der erforderlichen Join-Operationen einschätzen zu können. Prüfen Sie, ob die Anweisung eine angemessene Abfrage der Zieldatenbank bildet.
  • Hinweise für Vorauslesen können in folgenden Fällen nicht verwendet werden:
    • Pfade für vorheriges Laden über M:N-Beziehungen
    • Pfade für vorheriges Laden über rekursive Enterprise-Bean-Beziehungen oder rekursive fk-Beziehungen
    • Ein Hinweis für Vorauslesen ist für eine Anweisung SELECT FOR UPDATE bestimmt, die eine Join-Operation für Tabellen in einer Datenbank voraussetzt, die aber die Kombination dieser beiden Operationen nicht unterstützt.

      Im Allgemeinen setzt der Persistenzmanager eine Anweisung SELECT FOR UPDATE für eine Bean nur dann ab, wenn die Bean eine Zugriffsart hat, der strikte Sperrrichtlinien umsetzt. Strikte Sperrrichtlinien erfordern Anweisungen des Typs SELECT FOR UPDATE für Datenbankabfragen. Wenn das Design für die Datenbanktabellen eine Join-Operation für die Anweisung erfordert, setzen viele Datenbanken Ausnahmen ab, weil diese Datenbanken keine Join-Operationen für Tabellen mit Anweisungen des Typs SELECT FOR UPDATE unterstützen. In solchen Fällen implementiert WebSphere Application Server keinen Hinweis für Vorauslesen. Wenn die Datenbank diese Unterstützung nicht bietet, implementiert Application Server die von Ihnen konfigurierten Hinweise für Vorauslesen.

      [AIX Solaris HP-UX Linux Windows][z/OS]DB2 Universal Database Version 8.2 unterstützt Anweisungen des Typs SELECT FOR UPDATE in Join-Operationen für Tabellen.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_read
Dateiname:cejb_read.html