Hallo Christian,
soweit ich das aus Deiner Beschreibung deuten kann, steckst Du in einem selbsterzeugten Dilemma. Es entsteht dadurch, daß Du keine mehrschichtige Architektur verwendest, sondern Deine Datenzugriffe in die Objekte der Geschäftsprozesslogik GPL reingeknusselt hast. Hättest Du eine saubere Trennung zwischen GPL und Datenhaltung, dann würde zum Beispiel Dein Galerieobjekt eine Kollektion von Bildobjekten besitzen, die ihrerseits eine Kollektion von Kommentarobjekten enthalten. Die Frage nach dem Bestücken der Objekte mit ihren Daten aus der DB wird nicht innerhalb der Objekte beantwortet, sondern durch entsprechende Dialoge zwischen der GPL an und der Datenhaltungsschicht.
- In der Klasse 'bilder' das ganze mit reinpfrimeln: [...]
- In einer Schleife die Funktion getCount der Klasse Kommentare für jedes einzelne Bild aufrufen.
- Eine Schnittstelle zwischen beiden Klassen herstellen, mit der dann der SELECT aus 1. dynamisch zusammengebastelt wird, ohne, dass die beiden Klassen voneinander und von den unabhängigen Datenstrukturen wissen.
Wenn Dein Dilemma tatsächlich so ist wie von mir gesehen, dann halte ich moralische Skrupel gegen Deine Überlegung Nr. 1 für fragwürdig; Du hast ohnehin eine fundamentale Trennwand eingerissen. Wenn Du dennoch den Anschein eines sauberen Modells waren möchtest, so käme Nr. 2 in Betracht (wahrscheinlich wird der Performancelohn, den Du zu zahlen hast, sich in Grenzen halten). Nr. 3 würde mir die Komplexität des Gesamtmodells zu sehr erhöhen und zukünftige Wartung und Erweiterung erschweren - dann käme vielleicht eher ein Umbau auf ein mehrschichtiges Modell in Betracht.
HTH Robert