Ich versuche eine Anwendung zu erstellen, die ein Objektmodell mit einer Datenbank synchronisiert hält, indem alle Änderungen beobachtet und dann die Objekte in Fragen sofort beibehalten werden. Viele der Objekte im Modell haben Kinder in großen Listen oder Bäumen.JPA-Kaskadenoptionen zur Laufzeit
Wenn ich ein Objekt aus der Datenbank lade, verlasse ich mich auf eine einseitige Kaskadierungsbeziehung, um auch alle seine untergeordneten Elemente abzurufen und sie in die Anwendung aufzunehmen.
Es ist jedoch möglich, ein Feld im übergeordneten Objekt zu ändern, für das Persistenz erforderlich ist, und ich kann feststellen, dass keines der untergeordneten Objekte betroffen ist. Also möchte ich den Elternteil persistieren, ohne die Datenbank mit all dem kaskadierten Kind anzuhalten.
zB
@Entity
public class Parent {
@OneToMany(cascade=CascadeType.ALL)
public List children;
}
Wie kann ich die CASCADE-Option außer Kraft setzen, wenn ich ein übergeordnetes Objekt bestehen bleiben? Oder sollte ich es einfach auf REFRESH setzen und sicherstellen, dass ich nie eine Kaskadierung brauche?
Es ist eine eigenständige App mit der Datenbank auf demselben Computer oder einem Server in der Nähe. Das gesamte Modell muss sich im Speicher befinden, damit der Benutzer damit spielen kann. Ich versuche, das Ergebnis aller Benutzeraktionen zu erhalten, so dass sie nie auf "Speichern" klicken müssen. – Cogsy