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.
Ausnahmen verhindern, die auf einen Verstoß gegen die referenzielle Integrität (RI) zurückzuführen sind
- 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.
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
- 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.