Ich habe eine Spring 3 + JPA 2.0-Anwendung. In meinem @Controller
brauche ich ein initialisiertes Objekt, aber ich habe Proxies, ich muss es programmatisch initialisieren können. Ich brauche Funktionalität ähnlich wie org.hibernate.Hibernate.initialize(Object)
.
Kann jemand helfen? Das Objekt wird für AJAX-Operationen verwendet. Wenn die Eigenschaften Proxies sind, kann ich sie nicht als JSON
senden Keine JPA-Option meines Wissens. Sie sollten Hibernate.initialize(..)
verwenden.
Tatsächlich, wenn ich mir die Hibernate-Implementierung anschaue, scheinen in vielen Fällen faule Sammlungen initialisiert zu werden, die man nicht erwarten würde. Wie entityManager.contains(..)
und Persistence.getPersistenceUtil().isLoaded(...)
. Versuche dies, aber ich glaube nicht, dass du dich auf solche Implementierungsdetails verlassen solltest.
Wir machen eine ähnliche Sache in unserer Anwendung und wir haben es nützlich gefunden, unsere Datenbank-Entitätsobjekte zu teilen und eine weitere Gruppe von Klassen für die JSON-Ausgabe zu haben.
Wenn Sie ein JSON-Framework verwenden, das nur Ihr Objekt inspiziert und JSON für jede einzelne Eigenschaft auf dem Objekt ausgibt, dann können Objekte wie:
vorhanden seinPersonEntity - Klasse, die von JPA verwaltet wird und PersonJsonOutput - Klasse, die speziell für die JSON-Ausgabe entwickelt wurde
Könnte auf lange Sicht sicherer sein. Dadurch können Datenbankänderungen vorgenommen werden, die nicht automatisch in Ihrem JSON-Dienst berücksichtigt werden. Möglicherweise möchten Sie Ihren JSON-Dienst möglicherweise versionieren, anstatt alte Versionen zu unterbrechen, sobald sich Ihre Datenbankeinheit ändert.
Es gibt Ihnen auch mehr Kontrolle über Ihre JSON-Ausgabe in Form von Datumsformaten oder das Erzwingen von Zahlen in der Datenbank als Strings in Ihrem JSON, etc ...
Diese Antwort hängt wirklich davon ab, wie Sie Ihr JSON erzeugen, aber es hört sich an, als ob Ihre Bibliothek etwas introspektioniert.
Ich weiß, dass es zu spät ist und die Antwort wird akzeptiert, aber eine andere Standard-JPA-Methode besteht darin, die size () -Methode in der Liste aufzurufen, die initialisiert werden soll, bevor das Objekt vom DAO zurückgegeben wird:
%Vor%Dies erspart Ihnen das Schummeln und die Verwendung eines implementierungsspezifischen Mechanismus für die Initialisierung
Tags und Links java jpa hibernate spring spring-json