Sequenzgruppierung für über Container realisierte Transaktionspersistenz in assemblierten EJB-Modulen

Nach der Assemblierung eines EJB-Moduls (Enterprise JavaBeans), das CMP-Beans (Container-Managed Persistence, über Container realisierte Transaktionspersistenz) enthält, können Sie verhindern, dass bestimmte Typen datenbankbezogener Ausnahmen zur Laufzeit der Anwendung auftreten. Wenn Sie das Feature Sequenz verwenden, können Sie die Reihenfolge festlegen, in der die Entity-Beans Tabellen in relationalen Datenbanken aktualisieren.

Anmerkung: Entity-Beans werden in Modulen der EJB Version 3.x nicht unterstützt.

Ausnahmen verhindern, die auf einen Verstoß gegen die referenzielle Integrität (RI) zurückzuführen sind

Sequenzen ist besonders hilfreich, um Verstöße gegen die referenzielle Integrität (RI) einer Datenbank zu verhindern. Die Regeln einer RI-Richtlinie einer Datenbank legen fest, wie Daten in die Datenbanktabellen geschrieben und aus diesen gelöscht werden, um die relationale Konsistenz zu bewahren. Die Laufzeitanforderungen für die Verwaltung der Bean-Persistenz können jedoch dazu führen, dass eine EJB-Anwendung gegen RI-Regeln verstößt, woraufhin Datenbankausnahmen ausgelöst werden. Diese Laufzeitanforderungen schreiben vor, dass
  • die Create- und Remove-Methoden einer Entity-Bean direkt nach dem Methodenaufruf mit der Datenbank korreliert werden,
  • Entity-Bean-Änderungen vom EJB-Container so lange zwischengespeichert werden, bis eine Finder-Methode aufgerufen oder die Transaktion beendet wird.
Deshalb ist die Reihenfolge, in der Entity-Beans die Datenbank aktualisieren, nicht vorhersehbar. Diese Unvorhersehbarkeit birgt das Risiko, dass die Anwendung die referenzielle Integrität der Datenbank verletzt. Obwohl diese Laufzeitanforderungen durch das Caching von Operationen für die Stapelverarbeitung außer Kraft gesetzt werden, ist keine Bean-Persistenzsequenz gewährleistet, die einer bestimmten RI-Richtlinie entspricht.

Die einzige Möglichkeit, eine Persistenzsequenz zu gewährleisten, die die referenzielle Integrität der Datenbank wahrt, ist die Bestimmung der Sequenz im Editor für EJB-Implementierungsdeskriptoren des Assembliertools. Mit Sequenzen können Sie Beans CMP-Gruppen zuordnen. In jeder Sequenz geben Sie die Reihenfolge an, in der der Persistenzmanager die Bean-Daten in die Datenbank einfügt, um Aktualisierungen vorzunehmen, ohne die referenzielle Integrität zu verletzen.

Detaillierte Anweisungen zum Entwerfen von Sequenzen finden Sie im Artikel Laufzeit für CMP-Sequenzen konfigurieren. Informieren Sie sich bei Ihrem Datenbankadministrator über die RI-Richtlinie, der Sie folgen müssen.

Risiko von Ausnahmen bei einer optimistischen Steuerung des gemeinsamen Zugriffs verringern

Auch hier können Sequenzen Ausnahmen für Entity-Beans mit optimistischer Steuerung des gemeinsamen Zugriffs, die mit einer Zurücksetzung von Transaktionen verbunden sind, auf ein Minimum reduziert werden. Die Schemata für die Steuerung des gemeinsamen Zugriffs geben vor. dass Datenbanksperren nur für eine Mindestzeit gehalten werden, damit eine möglichst große Anzahl von Transaktionen kontinuierlich Zugriff auf die Daten haben. Der relativ uneingeschränkte Zustand der Datenbank kann aus zwei Gründen zu Ausnahmen beim Zurücksetzen von Transaktionen führen:
  • Wenn Transaktionen parallel versuchen, dieselbe Tabellenzeile zu sperren, kann dies zu gegenseitigen Datenbanksperren führen.
  • Transaktionen können in einer Reihenfolge ausgeführt werden, die gegen die Anwendungslogik verstößt.

Nutzen Sie das Feature "Sequenz", um die Bean-Persistenz so zu organisieren, dass diese Szenarien weitgehend ausgeschaltet sind.


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_sequence
Dateiname:cejb_sequence.html