2009-12-29 7 views
5

Während ich für das Ghost-Muster in einer 1: 1-Beziehung gehen werde, bin ich mir nicht sicher, ob dies in einer 1: n-Beziehung ausreicht.Wie Laden einer Eins-zu-viele-Beziehung in Data Mapper?

Wenn ich zum Beispiel ein Order-Objekt lade, das möglicherweise hundert Item-Objekte enthält, würde ich der Item-Eigenschaft zuerst NULL zuweisen.

Die Frage ist:

A) Soll ich zuweisen NULL und dann, beim ersten Zugriff des Artikel Eigenschaft Look für alle Bestellungen von diesem Artikel und alle von ihnen laden?

B) Oder sollte ich nur einen leichten Datensatz laden, der nur alle order_id's enthält und 100 Item Ghost-Objekte lädt, die nur die order_id-Menge haben, aber alles andere NULL - und sobald auf ein Item-Objekt zugegriffen wird, um mehr zu holen Details davon, Lazy-Load die spezifischen Item-Objektdaten?

Antwort

1

Nun IMO Ihre Bedürfnisse für Lazy-Loading unterscheiden sich in jeder Situation. Allerdings würde ich sagen, dass wenn Sie eine Bestellung haben, die groß genug ist, um 100 Artikel auf ihnen zu haben, gibt es selten eine Zeit, wenn Sie alle 100 Artikel zur gleichen Zeit laden möchten.

Was ich empfehlen würde ist, dass Sie jeden Artikel auf Anfrage laden, so dass Sie eine "Seite" von Artikeln oder nur ein Element laden können. Wenn Sie beispielsweise alle Artikel auflisten möchten, die Sie laden können, laden Sie die ausgewählte Seite "page" und da jedes Element bei Bedarf geladen werden kann, laden Sie einfach die ausgewählte Seite. Für die Leistung möchten Sie diese Objekte wahrscheinlich recyceln, sodass Sie vielleicht 10 Geisterobjekte erstellen und dann eine "Seite" gleichzeitig in diese 10 Elemente laden können.

Auf der anderen Seite, da ein Artikel bei Bedarf als solche geladen wird, könnten Sie nur einen Artikel laden, so dass Sie die vollständigen Details dieses Artikels anzeigen können, nur wenn Sie möchten.

Verwandte Themen