Hibernate optimistic locking..wie funktioniert es?

8

Ich habe den folgenden Blog über optimiertes Sperren im Winterschlaf gelesen. Ich plane, es mit Hibernate zu verwenden. Aber ich habe eine Sorge. Wir haben Java-Code und C ++ - Code, beide verbinden sich mit einer Datenbank. Während Java-Code Hibernate verwenden kann, um optimistisches Sperren zu erzielen, möchte ich den C ++ - Code das gleiche tun lassen. Außerdem verwendet C ++ Code einen älteren Code.

Ссылка

Gibt es eine Dokumentation, die erklärt, wie Hibernate optimistisches Sperren erreicht?

Irgendwelche Vorschläge sind willkommen.

Vielen Dank Bala

    
Boolean 27.07.2010, 20:13
quelle

1 Antwort

11

Um genau zu sein, meinen Sie nicht optimistisches Sperren, sondern optimistischen Nebenläufigkeit (ohne Sperre). Die Verwendung eines Zeitstempels für die Version dient nur der Unterstützung älterer Datenbanken, da eine moderne Datenbank (zumindest theoretisch) schneller als die Genauigkeit der Speicherung eines Zeitstempels arbeiten kann.

Die Eigenschaft der Ganzzahlversion ist sehr einfach:

  • Beim Einfügen: Version auf 1 setzen
  • Beim update und delete: Erhöhe die Version um 1 und füge "where version = @ version" an jeden sql statementent an. Gibt die Anzahl der geänderten Datensätze zurück. Wirf eine StaleObjectStateException, wenn die Anzahl der geänderten Datensätze anders als erwartet ist.

Persönlich würde ich nicht zwei separate Anwendungen erstellen, die dieselben Daten in einer Nicht-Legacy-Situation schreiben, weil das bedeutet, dass Geschäftslogik dupliziert werden muss und Änderungen an zwei Anwendungen vorgenommen werden müssen, auch wenn die Änderung relevant ist nur eine der Anwendungen.

    
Paco 27.07.2010 20:48
quelle