Korrigieren Sie mich, wenn dies ein genaues Duplikat ist, ich weiß, dass dieses Thema oft diskutiert wird, aber keine definitive Antwort finden kann.MVC mit faulen Laden
Die Frage:
Was ist die beste praktische Lösung Hibernate Objekte in einem MVC Webapp Handhabung?
Die Details:
Ich bin mit Hibernate und verzögertes Laden nutzen möchten, soweit möglich.
Ich arbeite in einer MVC-Stil Webapp.
Ich hasse es, lazy laden Initialisierung Ausnahmen.
Ich hasse es, Hibernate-Objekte zwischen Transaktionen neu zu verbinden.
Die Optionen:
- Eager Last alles
- Löst das verzögerte Initialisierung Problem aber macht meine Anfragen größer
- Konzept einige 'Open Session in View' Verwenden
- Ich liebe die Einfachheit davon
- Objekte müssen noch wieder angebracht werden, und in einem AJAXy Setup, recht häufig
- Eine Sitzung für jede Anforderung
- ‚touch‘ Artikel I vor dem Verlassen der Transaktion benötigen bei
- Scheint fadenscheinigen geöffnet beste .. und langweilig
- verschiedenen erstellen, vereinfacht, 'losgelöst' Objekte so nie die Ansicht Echt Hibernate sieht Objekte
- Th ese könnte einfacher als voll Hibernate Objekte zu sein, so ist es nicht eine volle eifrig Last des Modell wie
- ich dies in Orten empfohlen habe gehört, aber scheint wie mehr Haftung/code/Arbeit
- Öffnen Sie eine Sitzung wann immer ich mit Hibernate-Objekten interagieren möchte.
- Dies kann in einer Spring Service-Schicht ziemlich schön verpackt werden, scheint aber manchmal übermäßig. Zum Beispiel: Ich möchte
hibernateObject.getRelatedObjects()
aber so etwas wiespringService.getRelatedObjects(hibernateObject)
sagen müssen
- Dies kann in einer Spring Service-Schicht ziemlich schön verpackt werden, scheint aber manchmal übermäßig. Zum Beispiel: Ich möchte
bin ich etwas fehlt?
Habe ich Dinge überdenken?
Habe ich Dinge unterbewertet?
PS:
Für einen Web-Framework ZK Ich verwende aber nicht wirklich will, eine ZK spezifische Antwort.
Ich benutze auch Frühling und bin cool mit einer Frühlingsspezifischen Antwort, wie es so allgegenwärtig ist.
Prost Bedwyr, ich glaube, ich diesen Ansatz werde. Es ist ein bisschen mehr Code, aber die Trennung von Ansicht und Modell sollte es wert sein. –
Ich stimme dieser Antwort zu und stimme sie zu, ich möchte nur ein Stück Code hinzufügen, das Sie vielleicht nützlich finden. Hier ist ein Kopierer mit variabler Tiefe, er hängt von der Feder ab, ist aber leichter als eine komplette Kartierungslösung wie Dozer. https://gist.github.com/thinkbigthings/5488327 – Jay
Auch hier ist ein Hibernate Unproxifier: https: // gist.github.com/thinkbigthings/5141813 – Jay