Die Flexperten Herrlich & Ramuschkat

CF9 ORM: Service Layer mit dynamischer findBy-Funktion

Zufällig bin ich in den letzten Tagen bei Dan Vega auf einen interessanten Blog-Eintrag gestossen. Er beschreibt dort eine Möglichkeit, wie ein Service Layer für die Geschäfts-, bzw. Domain-Objekte implementiert werden könnte. Das wirklich interessante ist aber, wie ich finde, eine dynamische findBy-Funktion. Damit hat man in der Geschäftslogik die Möglichkeit, Objekte über ihre Eigenschaften zu identifizieren, ohne aber dafür die jeweilige Suchfunktion seperat implementieren zu müssen.

Kleines Beispiel: unser Benutzer-Objekt hat die x500-Eigenschaften gn,sn,l,mail,… und so weiter. In meiner Geschäftslogik möchte ich jetzt alle Benutzer-Objekte eines bestimmten Orts (“l”) identifizieren. Also müsste mein Service-Layer eine findByL-Funktion implementieren.

<cfset benutzer = application.user.findByL("Hannover")>

Und um gleich noch einen drauf zu setzen können die Eigenschaften auch und-Verknüpft werden. Also wenn ich ein Benutzer-Objekt über Vornamen und Nachnamen identifizieren möchte, so müsste ich die Funktion findByGnAndSn seperat implementieren – jetzt aber nicht mehr.

<cfset benutzer = application.user.findByGnAndSn("Max","Mustermann")>

Das Ganze wird über die onMissingMethod-Funktion für Coldfusion-Komponenten realisiert. Eigentlich einfache Sache das, muss man nur erstmal drauf kommen…

Noch keine Kommentare

Einen Kommentar schreiben