Diagramm: Zusammenhänge zwischen Service Contracts und ORM in Magento 2

Vinai Kopp hat kürzlich eine schöne Graphik auf Twitter online gestellt:

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!