Was bedeutet CascadeType.REFRESH eigentlich?
Frage
Was bedeutet die CascadeType.REFRESH
tatsächlich tun?
Die Definition für es ist
Wenn wir aktualisieren ein Unternehmen alle der in diesem Bereich refresh gehalten Einheiten zu
aber was bedeutet das in der Praxis? Könnte jemand ein einfaches Beispiel geben Sie mir bitte?
Lösung
Die einzelne CascadeType Beschreibungen können ein wenig verwirrend sein, aber es gibt eine einfache Möglichkeit, es aus dem allgemeinen Fall zu verstehen.
Für jede der CascadeType
Werte, bedeutet dies, dass, wenn der Betrieb X
auf einer Instanz mit der EntityManager
-Schnittstelle aufgerufen wird, und diese Instanz hat Verweise auf andere Objektinstanzen, und diese Assoziation definiert hat CascadeType.X
, dann wird der EntityManager
Betrieb auch sein angewandt auf diese zugehörigen Einheit.
So EntityManager.refresh()
ist wie folgt definiert:
Aktualisieren Sie den Zustand der Instanz von die Datenbank und überschreibt Änderungen das Unternehmen, wenn überhaupt.
Also, wenn Unternehmen A einen Verweis auf Einheit B hat, und dass die Bezugnahme mit @CascadeType.REFRESH
kommentiert und EntityManager.refresh(A)
genannt wird, dann wird EntityManager.refresh(B)
implizit auch genannt wird.
Andere Tipps
Retrieval durch Aktualisierung: Verwaltete Objekte können aus der Datenbank unter Verwendung der Refresh-Methode neu geladen werden:
Der Inhalt des verwalteten Objekts im Speicher abgelegt wird (einschließlich Änderungen, falls vorhanden) und durch Daten ersetzt, die aus der Datenbank abgerufen werden. Dies könnte nützlich sein, um sicherzustellen, dass die Anwendung befasst sich mit der aktuellsten Version eines Entitätsobjekt, nur für den Fall könnte es von einem anderen EntityManager geändert wurden, da es abgerufen wurde.
Quelle: http://www.objectdb.com/java/jpa/persistence/ abrufen