Vorteile der Objekt -.get() vs-Objekt.read() in Grails
Ich war skimming einige der Grails-Dokumentation und fand diese bisschen über die read()
Methode in Grails. Wenn ich dieses Verständnis korrekt ist, können Sie ziehen Sie einen "read-only" - version eines Objekts aus der Datenbank werden nur dann gespeichert, auf eine explizite save()
nennen. Es scheint mir dann, dass Sie verwenden sollten, eine read()
anrufen wenn Sie ein Objekt haben, dass Sie nicht erwarten, dass die geändert werden.
Aber warum würden Sie nicht einfach immer mit einem read()
nennen? Da wird das Objekt geändert werden, um lese/schreib-Berechtigungen, wenn Sie save()
es trotzdem, wäre es nicht sicherer, zu Lesen, einfach in das Objekt, anstatt es?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie wahrscheinlich richtig - es wäre gleichwertig, in den meisten Fällen. Aber Hibernate nicht erforderlich, dass Sie anrufen
save()
da es schmutzig-Prüfung während ein flush und seit Grails verwendet eine "Open Session in View" interceptor wird es immer einen flush am Ende jeder Anfrage. Das überrascht Menschen, die änderungen in einer Instanz abgerufenget()
wurden, soll nur vorübergehend sein, während rendering-Ansicht, aber dann werden die änderungen beibehalten sowieso ohnesave()
nennen.read()
mehr Sinn machen würde in diesem Szenario.Einer performance Optimierung ist die Verwendung http://grails.org/doc/latest/ref/Database%20Mapping/dynamicUpdate.html, um nur push-geänderte Felder in der Datenbank. Die Standardeinstellung ist, schieben Sie alle Felder, egal, ob Sie sich verändert oder nicht, da gibt es keine Notwendigkeit zu erzeugen, die die neuen SQL für jedes update. Wenn Sie
read()
eine Instanz Hibernate nicht immer die original-Daten, so dass das dynamische update nicht möglich wäre, da gäbe es keine Möglichkeit zu wissen, welche Felder fehlerhaft sind.