Vinai Kopp hat kürzlich eine schöne Graphik auf Twitter online gestellt:
Thanks to @matthewhaworth who pointed out I had swapped the labels "implements" and "uses" on the arrows wrong.
Here is a fixed version of the diagram 🙂 pic.twitter.com/jLrj9kPTz1— Vinai (@VinaiKopp) June 19, 2018
Das Diagramm fasst wichtiges Basis-Wissen zusammen, wie Models in der Datenschicht von Magento 2 zusammenarbeiten:
- Repositories und Daten-Objekte bilden zusammen die Geschäftslogik ab.
Damit andere Module diese Geschäftslogik verlässlich verwenden können (auch über mehrere Modul-Versionen hinweg), definiert das Modul einen „Service Contract“, ein öffentliches API. - Das ORM-Model, das Resource-Model und die Collections sind für objekt-relationales Mapping („ORM) zuständig.
ORM ist die Übersetzung von objekt-orientierten Datenstrukturen in relationale Datenstrukturen, wie sie in klassischen Datenbanksystemen vorkommen. Hier wird keine Business-Logik eingebaut.
Für Model, Resource-Model und Collection existieren abstrakte Klassen. Sie ersparen Arbeit, wenn man die konkrete Implementierung eines Models, eines Resource-Models bzw. einer Collection vornimmt. - Die eigentliche Daten-Speicherung übernimmt die Datenbank-Abstraktionsschicht. Nur das Resource-Model und die Collection haben eine Verbindung zur Abstraktionsschicht. Und nur die Abstraktionsschicht kann mit dem eigentlichen Datenbank-Adapter kommunizieren, der die „Sprache“ des verwendeten Datenbank-Systems spricht. Im Fall von Magento 2 ist das aktuell MySQL.
Danke an Vinai dafür, dass er das Diagramm angefertigt hat und es in der Public Domain bereitstellt!