Die folgende Graphik
beschreibt den aktuellen Ablauf bei der nacheinander folgenden
Durchführung von mehreren Castor-Transaktionen:
In diesem Beispiel erzeugen wir ein JDO, und speichern es in
die Datenbank. Nachdem wir dieses (oder auch ein beliebiges
anderes) Objekt über eine OQL-Abfrage aus der Datenbank
zurückholen, modifizieren wir es und speichern es wieder
zurück in die Datenbank.
Hierbei sind zwei Dinge zu beachten:
Um den ersten Transaktionszyklus abzuschließen,
rufen wir die Funktion Database.close() auf.
Die intern von Castor verwaltete JDBC-Verbindung wird
direkt beim Durchführen des Commits geschlossen.
Im Folgenden wird
veranschaulicht, wie die nacheinander durchgeführten
Operationen optimiert werden könnten:
Nun schließen wir die JDBC-Session nicht sofort im
commit() (bzw. rollback)-Aufruf. Stattdessen wird dieser
Schritt in den close()-Aufruf verlegt.
Es ist nicht notwendig, nach Abschluß der ersten
Transaktion die Funktion close() aufzurufen. Der zweite
Aufruf von begin() verwendet das Transaktionsobjekt wieder,
und verwendet so weiterhin die selbe JDBC-Session.
Auf diese Weise sparen wir uns den sehr zeitintensiven Schritt,
jedes Mal zu Beginn einer neuen Transaktion eine eigene
Datenbank-Session zu öffnen.