Was ist der beste Weg, um verteilte Transaktionen über mehrere Datenbanken mit Spring und Hibernate durchzuführen?

Ich habe eine Anwendung - eher wie ein Dienstprogramm - die sich in einer Ecke befindet und regelmäßig zwei verschiedene Datenbanken aktualisiert.

Es ist eine kleine eigenständige App, die mit einem Spring Application Context erstellt wurde. In dem Kontext sind zwei Hibernate Session Factories konfiguriert, die wiederum in Spring konfigurierte Commons DBCP-Datenquellen verwenden.

Derzeit gibt es keine Transaktionsverwaltung, aber ich möchte einige hinzufügen. Die Aktualisierung einer Datenbank hängt von einer erfolgreichen Aktualisierung der anderen ab.

Die App befindet sich nicht in einem Java EE-Container. Sie wird von einer statischen Launcher-Klasse gebootet, die von einem Shell-Skript aufgerufen wird. Die Launcher-Klasse instanziiert den Anwendungskontext und ruft dann eine Methode für eines ihrer Beans auf.

Wie kann die Transaktionalität der Datenbankaktualisierungen am besten umgesetzt werden?

Ich überlasse die Definition von "am besten" Ihnen, aber ich denke, es sollte eine Funktion von "einfach einzurichten", "einfach zu konfigurieren", "kostengünstig" und "einfach zu verpacken und neu zu verteilen" sein. Natürlich wäre FOSS gut.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage