Original von NeoWhoRU
nachdem ich nun entschieden habe, ein eigenes kleines MVC Framework zu entwickeln (einfach aus den Gründen des DRY Prinzips - weil für einen PHP Entwickler einmal der Tag kommt wo man einfach kein bock hat immer wieder ähnliche Aufgaben zu erledigen was besonders CRUD Anwendungen betrifft), bin ich nun am Punkt angekommen an der es nun an die Datenbank Klassen geht.
Ich habe das mal vor ein paar Jahre in Perl gemacht - ein eigenes, kleines Web-CMS. Vom Lerneffekt her eine gute Sache, von der Sicherheit her auch - aber vom Arbeitsaufwand ... naja, mittlerweile benutze ich eines von der Stange. Und MVC-Frameworks: das ist ebenfalls viel Aufwand, für etwas, was es schon in guter Qualität gibt (es sei denn, du hast eine Idee, wie man da etwas substantiell verbessern kann - lass hören )
Dabei ist mir die Überlegung gekommen, ob ORM oder nicht.
Mich würde interessieren : setz ihr ORM Frameworks ein ?
Ich find die Idee an sich ganz gut bei ORM und auch der Programmierstil von ORM ist in einem MVC basierenden Framework sehr schön übersichtlich, allerdings ist es auch recht komplex ein ORM Framework verstehen zu lernen.
Wenn du objektorientiert programmierst und eine relationale Datenbank verwendest, kommst du um ORM nicht herum. Alles andere ist nicht "the right tool for the job". Ausnahmen bestätigen die Regeln, es _kann_ natürlich einen Grund geben, rohes SQL zu schreiben. Aber im Normalfall... spart es eine Menge Arbeit. Ungefähr die Menge an Arbeit, die man hat, wenn man so ein ORM-System debuggen muß (will sagen: irgendwann macht ein ORM natürlich Probleme, und dann kommt man um eine tiefergehende Beschäftigung damit nicht herum. Trotzdem: alles selbst schreiben hört sich vielleicht toll an, ist es aber nicht).
Zudem versteh ich noch nicht genau was das Mapping von tabellen auf Klassen für einen genauen Sinn macht.
Zuletzt schreibt halt das Model ja die Daten über die Abstract Klassen in die Datenbank.
Ich mein ein vorteil ist klar : man könnte Problemlos das Datenbank System wechseln und müste sich nicht um die Querys kümmern - allerdings wie häufig kommt sowas wirklich vor ? In der Regel selten bis gar nicht.
Naja, bei einem Kunden muß das Cinnamon-CMS (wenn ich das hier mal erwähnen darf ;) ) mit MS-SQL-2000 unter Windows 2000 arbeiten. Aber entwickeln tue ich es unter Postgres / Linux. Ohne Hibernate-ORM wäre das nicht sinnvoll zu machen. Für LittleGoblin wollte ich Postgres unter Windows verwenden (weil der Testserver das halt hat), aber nach einigen unerquicklichen Fehlschlägen bei der Installation habe ich die Config geändert und nun läuft es unter MySQL... die Flexibilität eines ORM ist schon mal ein wesentlicher Pluspunkt gegenüber handgestricktem SQL.
Bei LittleGoblin hat das ORM genau den Sinn, daß ich mich nicht mehr damit beschäftigen muß, als nötig. (Wobei es natürlich gut ist, wenn man weiß, was man tut bzw. was da im Hintergrund passiert - keine Frage.)
http://dewarim.com/browsergame/images/classDiagram-0.1.34.png/image
Zeigt ein altes Klassendiagramm. Browserspiele werden schnell komplex... und im Fall von Grails werden die Beziehungen zwischen den Objekten fast wie von selbst (mit Hibernate) erstellt, ohne daß ich auf SQL-Ebene von Hand umfangreiche Joins formulieren muß.