Unterschied zwischen Kaskade und Umkehrung

Unterschied zwischen Kaskade und Inverse

Viele Hibernate-Entwickler sind verwirrt über die Kaskadenoption und das inverse Schlüsselwort. In gewisser Hinsicht sehen sie sich am Anfang sehr ähnlich, beide haben etwas mit Beziehung zu tun.

Kaskade gegen Inverse

Es gibt jedoch keine Beziehung zwischen Kaskade und Inverse, beide sind völlig unterschiedliche Vorstellungen.

1. invers

Dies wird verwendet, um zu entscheiden, auf welcher Seite der Beziehungseigentümer die Beziehung verwaltet (Einfügen oder Aktualisieren der Fremdschlüsselspalte).

Beispiel

In diesem Beispiel gehört der Eigentümer der Beziehung zu stockDailyRecords (inverse = true).



    
    ...
    
        
            
        
        
    
    ...

Wenn Sie das Lagerobjekt speichern oder aktualisieren

session.save(stock);
session.update(stock);

Der Ruhezustand fügt nur die Tabelle STOCK ein oder aktualisiert sie, keine Aktualisierung der Fremdschlüsselspalte. More detail example here…

2. Kaskade

Nach Abschluss einer Operation (Speichern, Aktualisieren und Löschen) entscheidet die Kaskade, ob andere Operationen (Speichern, Aktualisieren und Löschen) für andere Entitäten aufgerufen werden müssen, die in Beziehung zueinander stehen.

Beispiel

In diesem Beispiel wird die Kaskade "save-update" in stockDailyRecords deklariert.



    
    ...
    
        
            
        
        
    
    ...

Wenn Sie das Lagerobjekt speichern oder aktualisieren

session.save(stock);
session.update(stock);

Es wird der Datensatz in die STOCK-Tabelle eingefügt oder aktualisiert und eine andere Einfüge- oder Aktualisierungsanweisung (cascade = ”save-update”) bei StockDailyRecord aufgerufen. More detail example here…

Fazit

Kurz gesagt, "invers" entscheidet, welche Seite den Fremdschlüssel aktualisiert, während "kaskadiert" entscheidet, was die folgende Operation ausführen soll. Beide sehen in der Beziehung ziemlich ähnlich aus, aber es sind zwei völlig verschiedene Dinge. Entwickler, die sich im Ruhezustand befinden, sollten Zeit für die Erforschung des Konzepts aufwenden, da ein Missverständnis des Konzepts oder dessen Missbrauch schwerwiegende Probleme mit der Leistung oder der Datenintegrität Ihrer Anwendung mit sich bringt.