2009-05-20 6 views
2

Können mir einige erklären, was der Vorteil der Verwendung von abgelösten Objekten im Kontext einer Webanwendung ist? AFAIK sind nur nützlich, wenn die Objekte den "lexikalischen" Bereich der Transaktion überstehen, aber typischerweise in einer Webanwendung, wenn Ihre Transaktion vorüber ist, senden Sie Ihre Objekte einfach an die Ansichtsebene, und sie werden nicht wieder angehängt.Freistehende Objekte in Jdo/Hibernate - Wofür sind sie überhaupt?

Nach meinem besten Wissen ist das Entfernen eines Objekts nur dann nützlich, wenn Sie es später zusammenführen/wieder anbringen, und ich sehe den Vorteil nicht darin, einfach nur eine gerade Aktualisierung des Objekts zu tun an die DB.

Jeder Beispielcode wird geschätzt.

Edit: zur Verdeutlichung, ich versuche zu verstehen, die Vorteile eines abgelösten Objekts gegenüber einer transienten (eine, die für die db zum Beispiel kam aber nicht später wieder angebracht werden kann).

Antwort

0

Angenommen, Sie haben eine Seite mit Dutzenden von Dropdowns, die aus Zeilen in verschiedenen Tabellen ausgefüllt sind. Sie möchten nicht jedes Mal, wenn Sie die Seite rendern, Rundreisen in die Datenbank machen. Sie können also die Objektlisten greifen, sie lösen und irgendwo speichern. Solange Sie darauf achten, nicht auf Eigenschaften zu verweisen, die faul geladen sein könnten, geht es Ihnen gut.

+1

Aber so können meine Objekte abgestanden sein. Außerdem versuche ich zu verstehen, was der Unterschied zwischen der Verwendung von Detach und Transient ist. –

1

Das freistehende Objekt kann auch seine Versionsnummer enthalten (wenn Sie eine Versionierungsspalte haben). Wenn Sie beispielsweise den Ansatz für einen Entity-Editor verwenden, laden Sie die Entity und speichern sie in einer http-Session (oder einem anderen langlebigen Store), aktualisieren sie dann und führen sie bei einer späteren Interaktion in eine andere Session zurück , kann Hibernate automatisch überprüfen, dass die Entität (oder andere Entitäten in Ihrem zusammengeführten Objektdiagramm) nicht gleichzeitig geändert wurde.