1. Sorry, ich bin kein studierter Informatiker – was heißt „Persistenz orthogonal zur Geschäftslogik“?
Normalerweise sollte eine Klasse nur eine Aufgabe haben (Single Responsibility Principle) oder anders ausgedrückt: verschiedene Aufgaben sollten auch verschiedene Klassen aufgeteilt werden (Separation Of Concerns). Das sind grundlegende
Prinzipien der Softwareentwicklung, die helfen Software wartbar zu machen. Man kann so leicht Teile austauschen, ändern und wiederverwenden ohne dabei unnötigen Aufwand zu haben und unnötig Fehler zu produzieren.
Jo, weiß ich, mach ich natürlich auch so. Sehe aber nicht inwiefern der Getter dieses Prinzip verletzt. Der Getter erzeugt ja nur das Objekt mit dem entsprechenden Parameter (z.B. ID), das eigentliche Laden sollte dann das erzeugte Objekt anstoßen – der Code zum Laden selbst sollte natürlich wieder in eine weitere Klasse ausgelagert sein. Diese Klasse (die ein festgelegtes Interface implementiert) könnte man entweder als Parameter im Konstruktor übergeben, oder sonstwie registrieren, wodurch sich der Ladecode nachträglich austauschen lässt.
In der Datenklasse steht dann kein Code, der sich direkt um die Persistenz kümmert, lediglich ein Getter, der eine Eigenschaft zurückliefert. Das würde ich noch nicht als Geschäftslogik bezeichnen.