Persistence Ignorance ist eine Anwendung des Single-Responsibility-Prinzips. In der Praxis bedeutet dies, dass Domain Objects ( DO ) keinen Code in Bezug auf Persistenz enthalten sollten, sondern nur Domänenlogik.
a) Ich gehe davon aus, dass der Code, der die unteren Schichten (dh die Persistenzschichten) berührt, außerhalb des Domänenmodells in anderen Klassen ( OC ) einer Geschäftslogikschicht liegt.
b) Wenn meine Annahme unter a) richtig ist , dann DO , sagen wir Customer, nie enthält Methoden wie GetCustomersoder GetCustomerByID?
c) Wenn meine Annahmen unter a) und b) korrekt sind und angenommen wird , dass das Domänenobjekt Customerfür einige seiner Eigenschaften verzögertes Laden verwendet, Customermuss sich die interne Logik irgendwann an OC wenden, um die zurückgestellten Daten abzurufen. Wenn Customerjedoch OC kontaktiert werden muss, um verzögerte Daten zu erhalten, können wir nicht wirklich behaupten, dass Domain-Objekte keine Logik in Bezug auf Persistenz enthalten ?!
Vielen Dank
ANTWORT AUF jkohlhepp
1) Ich nehme an OrderProviderund CustomerProviderKlassen sind in der Business-Logik-Schicht enthalten?
2) Ich entnehme Ihrer Antwort, dass meine Annahmen unter b) korrekt sind.
3)
... Ich würde prüfen, ob ein Feld für private Bestellungen ausgefüllt ist oder ob es leer ist. Wenn es null ist ...
Aber soweit ich das orderbeurteilen kann, verstoßen wir bereits gegen das PI- Prinzip , sobald der Domain-Code überprüfen muss, ob ein privates Feld ausgefüllt wurde, und wenn nicht, wenden Sie sich an OrderProvider.