SQL hat den Vorteil das es besonders schnell ist. Weiterhin wenn man bereits SQL kann und kein ORM ist der einstieg und die einarbeitung in einem ORM größer. Sprich SQL ist erstmal einfacher.
Nachteil von SQL und die direkte nutzung mit DBI ist der Umgang, weil du dann mit array/hashrefes hantieren musst. Nutzt du OOP musst du beim direkten umgang mit DBI deine Objekte selber erzeugen. Was nervig ist. Schreibst du deine Klassen rund um SQL hast du praktisch dein eigenes ORM geschrieben.
Ansonsten musst du SQL generell oft dynamisch erzeugen. Und das kann Stellenweise sehr komplex werden. Ein ORM nimmt dir diese arbeit ab.
Teilweise kann ein ORM auch wieder schneller sein. Den die generierung und verschachtelung mit puren DBI kann sher komplex werden, weichst du darauf auf und erzeugst z.B: ein Query, gehst die zeilenweise durch und machst auf einer zeile basierend wieder ein query. endest du darin das du hunderte SQL abfragen machst. Ein ORM wie DBIx::Class ist in der lage auch verschachtelte sachen mit einem SQL Statement zu fetchen, was letztendlich performanter ist.
DBIx::Class hat für mich aber auch einige Mängel. z.B. Fehlerbehandlung. Keine Validierung der Daten. Und da ich es gerade im gespräch hatte, warum gibt find() z.b ein undef zurück anstatt zu sterben wenn ein Eintrag in der Datenbank nicht existiert?
Ein weiterer Vorteil von einem ORM ist auch das er mehr dazu führt platformübergreifend zu sein. Manches SQL ist z.B. für eine bestimmte datenbank und geht bei einer anderen nicht. Mit ORM hast du da keine Probleme.
Ansonsten wollte ich mich demnächst mal mit KiokuDB auseinandersetzen. Was mehr oder weniger ein ORM ist. jedenfalls nicht nach dem klasischen prinzip wie DBIx::Class. Man hat kein Schema mehr und KiokuDB serialisiert nach key/value verfahren.
Halt nach dem prinzip der "neuen" "Datenbanken" wie CouchDB, MongoDB etc.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de