Ich gehe davon werde Ihnen eine DAL mean schreiben, die SQL zugreift, da dies die häufigste Teil heute ist. ONe, wenn das größte Problem beim Schreiben einer DAL gegen SQL der ORM-Teil ist. Das heißt, es gibt eine fundamentale Impedanzfehlanpassung zwischen OO-Programmierung und relationalen Datenbankschemata. Es gab viele großartige, sogar erfolgreiche Versuche, ORMs zu schreiben. Aber alle leiden unter dem gleichen Problem, das ihr Vorteil ist: Sie abstrahieren Sie weg von dem zugrunde liegenden SQL, das generiert wird. Warum dies ein Problem ist, ist, dass die Leistung Ihrer Datenbank eine kritische Komponente davon ist, wie gut Ihr System insgesamt funktioniert. Viele ORMs (vielleicht die meisten) haben nicht nur eine für viele Standardabfragen weniger als stellare Leistung, sondern ermutigen tatsächlich zu Nutzungsmustern, die die Leistung erheblich beeinträchtigen (wiederholtes Durchlaufen von Beziehungen innerhalb von Schleifen, wenn das Abfragen von Sammlungen ein häufiges Beispiel ist) Ein weiterer). Nachdem Sie die ORM-API im Detail gelernt haben, können Sie in der Regel nach Wegen zu diesen Performance-Schlaglöchern suchen.
Meine aktuelle Meinung über den Zustand von ORMs ist, dass ich möchte, dass es so wenig wie möglich macht, während es mir immer noch die Effizienz einer soliden Bibliothek gibt, die sich um alle Details des Datenzugriffs kümmert. Mit anderen Worten, weil ich denke, dass sie noch nicht "gut genug" sind und vielleicht nie mit SQL als Backend arbeiten, möchte ich die Kontrolle auf der Bare-Metal-Ebene behalten und ich werde auf SQL schreiben Hand, ohne zu zögern in vielen Fällen, unabhängig von der ORM, weil ich die spezifische Art und Weise weiß, wie die Daten für meine Bedürfnisse abgefragt werden sollen.
Dies ist offensichtlich ein spröderer Ansatz für die Codierung als wenn Sie das ORM religiös verwenden, wie es beabsichtigt war, so dass Sie besonders sorgfältig in Bezug auf Komponententests, SQL-Injektion und ordnungsgemäße Trennung von Bedenken sein müssen . Also, um es zusammenzufassen, stimme ich Ash zu, obwohl das nicht bedeutet, dass er/sie mit mir einverstanden ist :)
Ich stimme zu, dass für verschiedene Situationen die Antwort anders sein wird, aber ich suche nur nach verschiedenen Techniken und wie sie geklappt haben. –