Ich kämpfe mit einer Art und Weise zu entwickeln, um effizient verwalten Flex Einheiten, die eine many-to-many-Beziehungen zwischen ihrer JPA/Java Pendants haben. HierWie behandelt man M: M-Entity-Beziehungen in der Flex/Java-Webanwendung?
ist das Problem ... stellen Sie sich einen Film Rezension Web-Anwendung mit zwei Entitäten:
@Entity
Class Movie {
List<Viewer> Viewers;
}
@Entity
Class Viewer {
List<Movie> Movies;
}
Beide dieser Einheiten unabhängig voneinander existieren können und beide haben eine 1: M-Beziehung mit der anderen Seite. Die Beziehung gehört nicht wirklich der einen oder anderen Seite. In der Anwendung gibt es Flex-UI's, die manchmal Betrachter basierend auf Filmen und anderen Benutzeroberflächen sehen möchten, die Filme basierend auf Zuschauern sehen wollen.
Momentan sind sowohl die Movies.Viewers
als auch die Viewers.Movies
Sammlungen lazy von JPA geladen, was gut funktioniert. Das Problem ist, dass jedes Mal, wenn ich einen Zuschauer nach seiner Liste von Filmen frage, alle über den Draht gesendet werden und ich dann innerhalb von Flex mit einer Reihe von Movie-Objekten lande, die (oft nicht immer) die bereits vorhandenen kopieren Dort.
Es scheint im besten Fall ineffizient und könnte wahrscheinlich Fehler verursachen, wenn die doppelten Objekte nicht behandelt werden.
In meiner realen Anwendung habe ich Tonnen dieser Arten von Beziehungen über einige sehr große Objektdiagramme.
Es scheint mir fast, dass die Lazy geladenen Objekt Sammlungen in eifrig geladene Sammlungen von Fremdschlüsseln umgewandelt werden müssen, die zum expliziten Laden von Objekten auf der Flex-Seite der Dinge verwendet werden. Aber das scheint so zu sein, als würde ich einen JPA-Anbieter in Flex schreiben! Ist die richtige Antwort, den Status nie in einer Flex-Anwendung zu speichern? (Yikes) Hilfe !!
Update:
Ich sollte hinzufügen, dass alle über meine Wertobjekte eine UID, die auf der Server-Seite erstellt wird, so konnte ich irgendwie, dass verwenden, um Duplikate auf der Flex Seite zu finden/entfernen. Aber wie?
Haben Sie tatsächlich überprüft, dass Ihr JPA-Anbieter mehrere Kopien derselben Entität erstellt? Es ist wahrscheinlich, dass auf der Server-Seite der Dinge mehrere Verweise auf dieselbe Kopie vorliegen, was kein großes Problem darstellt. Jetzt würde ich nicht bezweifeln, dass Sie mehrere Kopien erhalten, wenn sie über die Leitung gesendet werden. Ich glaube jedoch nicht, dass das Thema JPA ist. – Pace
Sie haben Recht, JPA ist in Ordnung, das Problem ist auf der Flex-Seite. Jedes Mal, wenn ich RemoteObject in Flex zum Abrufen einer geladenen Sammlung verwende, werden alle Entitäten wieder an Flex zurückgegeben, aber einige/die meisten davon sind bereits vorhanden. Sie sind also auf der Flex-Seite doppelt vorhanden. – HDave