Wie starte ich die Transaktion und Rollback mit JOOQ?

9

Ja! Ich habe die Dokumente über

gelesen
  
  • jooq wird niemals auf der Verbindung festschreiben oder einen Rollback ausführen (außer für   CSV-Importe, falls explizit in der Import-API konfiguriert)
  •   
  • jOOQ wird niemals Transaktionen starten.
  •   
  • ...
  •   

Aber wenn ich ein Transaktionsmanagement brauche, was ist die beste Vorgehensweise, um dies zu tun?

Habe ich gesagt, dass ich ein großer Fan von einer Art von JOOQ bin!

    
Mark 01.03.2013, 14:16
quelle

3 Antworten

11

Diese Frage wurde zu einem Zeitpunkt gestellt, als jOOQ noch keine Transaktions-API implementiert hatte. Ab dem 01.04. Ist eine solche API verfügbar und dokumentiert:

Ссылка

Transaktions-API und ihre Standardbindung an JDBC

Standardmäßig bindet jOOQ seine (verschachtelte) Transaktionsunterstützung direkt über eine einfache, funktionale API an die JDBC-API:

%Vor%

... der Lambda-Ausdruck (oder genauer gesagt der TransactionalRunnable ) ) Erstellt eine neue Transaktion an ihrem Anfang und schreibt sie bei normalem Abschluss fest oder rollt sie bei einer Ausnahme zurück.

Solche Transaktionen können geschachtelt werden

%Vor%

... in dem Fall Savepoint wird am Anfang der verschachtelten Transaktion erstellt, und die verschachtelte Transaktion verwirft den Sicherungspunkt bei normalem Abschluss oder rollt nach einer Ausnahme auf diesen zurück.

Überschreibt die Standard-JDBC-Bindung

In vielen Anwendungen haben Sie bereits ein bereits bestehendes Transaktionsverwaltungssystem, z. JTA oder Spring TX oder etwas anderes. In diesem Fall können Sie entweder:

  • Verwenden Sie die jOOQ-Transaktions-API überhaupt nicht
  • Implementieren Sie Ihre eigene TransactionProvider , die die Semantik von begin() implementiert. , commit() und rollback() Operationen, z indem du sie an Spring bindest.
Lukas Eder 02.03.2013 09:29
quelle
4

Die Transaktionssteuerung ist unabhängig von einer DB-Zugriffsebene, wie sie JOOQ bietet.

Das Starten und Beenden von Transaktionen wird wahrscheinlich am besten in der Serviceebene Ihrer Anwendung gehandhabt. Sehen Sie sich das Diagramm auf dieser Seite an, das die Beziehung der Service-Schicht zu den unteren Schichten zeigt, die sie aufruft.

Siehe auch Muster wie Arbeitseinheit oder Transaktionsskript .

    
Bill Karwin 02.03.2013 09:36
quelle
0

Ich könnte einen einfachen Weg finden, dies über diesen Link zu tun: Ссылка .

Diese Antwort gibt Ihnen möglicherweise eine ausführlichere Erklärung: Ссылка

    
CodePredator 24.06.2014 07:24
quelle

Tags und Links