2016-10-11 3 views
1

Ich habe eine Klassenhierarchie DB-Tabellen zugeordnet, sagen A->B->C. A enthält Primärschlüssel und B/C verweisen auf sie für ihre Zeilen. Ich speichere ein Objekt C. Hibernate erstellt also einen Datensatz für A, dann B und C. Ist das richtig? (Ich verwende keine Transaktionen). Ich verwende Hibernate 3.2.6 GA.Wird die Hibernate-Sitzung asynchron gespeichert?

Frage: ist das synchronous oder asynchronous? Ich nahm an, dass es synchron ist, also wird es nicht zurückkehren, bevor alle diese Zeilen gespeichert sind. Es scheint jedoch, dass einige Tabellen noch aktualisiert werden, auch wenn sie zurückkehren. So z.B. Wenn ich für ein C Objekt nach dem Speichern abfragen, bekomme ich den Zustand für A und B aber leere Zustand für C. Es wird nirgendwo ein Fehler zurückgegeben und wenn ich die DB manuell überprüfe, werden dort alle Daten korrekt gesehen.

+0

Können Sie etwas Code teilen? – Gernot

+0

Es ist proprietär, so kann nicht teilen. Wirklich leid. – shrini1000

Antwort

1

In diesem Fall ist es synchron. In den meisten Fällen wird asynchrones Verhalten vom Framework selbst gehandhabt. Entwickler, die versuchen, asynchrones Verhalten zu implementieren, können zu unvorhersehbaren Ergebnissen führen. Für den Fall, dass die erwarteten Eigenschaften nicht aktualisiert werden, überprüfen Sie bitte den Code und die entsprechende von hibernate generierte SQL.

Auch asynchron bedeutet hier, dass Hibernate einige Entitäten aktualisieren und bündig/synchronisieren sie in einem Rutsch mit der Datenbank. Es bedeutet niemals, dass Teile von Daten zu unterschiedlichen Zeiten aktualisiert werden. Dieses Verhalten führt zu einem inkonsistenten Datenbankstatus.

Verwandte Themen