Obwohl ich die Bedenken hinsichtlich des Java-Ersatzes für Freiform-SQL-Abfragen teile, glaube ich wirklich, dass Leute, die ORM kritisieren, dies aufgrund eines allgemein schlechten Anwendungsdesigns tun.
True OOD wird von Klassen und Beziehungen gesteuert, und ORM bietet Ihnen eine konsistente Zuordnung verschiedener Beziehungstypen und Objekte. Wenn Sie ein ORM-Tool verwenden und am Ende Abfrageausdrücke in der vom ORM-Framework unterstützten Abfragesprache codieren (einschließlich, aber nicht beschränkt auf Java-Ausdrucksbäume, Abfragemethoden, OQL usw.), machen Sie definitiv etwas falsch, dh Ihr Klassenmodell Höchstwahrscheinlich werden Ihre Anforderungen nicht so unterstützt, wie sie sollten. Für ein sauberes Anwendungsdesign sind keine Abfragen auf Anwendungsebene erforderlich. Ich habe viele Projekte überarbeitet, bei denen die Leute anfingen, ein ORM-Framework auf dieselbe Weise zu verwenden, wie sie zum Einbetten von SQL-Zeichenfolgenkonstanten in ihren Code verwendet wurden, und am Ende waren alle überrascht, wie einfach und wartbar die gesamte Anwendung wird, sobald Sie übereinstimmen Erweitern Sie Ihr Klassenmodell mit dem Nutzungsmodell. Zugegeben, für Dinge wie Suchfunktionen usw. benötigen Sie eine Abfragesprache, aber selbst dann sind Abfragen so stark eingeschränkt, dass das Erstellen einer noch komplexeren ANSICHT und das Zuordnen zu einer schreibgeschützten persistenten Klasse viel besser zu pflegen und zu betrachten ist als das Erstellen von Ausdrücken in einer Abfragesprache im Code Ihrer Anwendung. Der VIEW-Ansatz nutzt auch Datenbankfunktionen und kann über die Materialisierung in Bezug auf die Leistung viel besser sein als jedes handgeschriebene SQL in Ihrer Java-Quelle. Daher sehe ich keinen Grund für eine nicht triviale Anwendung, ORM NICHT zu verwenden. Aber selbst dann sind Abfragen so stark eingeschränkt, dass es viel besser ist, eine noch komplexere ANSICHT zu erstellen und diese einer schreibgeschützten persistenten Klasse zuzuordnen, als Ausdrücke in einer bestimmten Abfragesprache im Code Ihrer Anwendung zu erstellen. Der VIEW-Ansatz nutzt auch Datenbankfunktionen und kann über die Materialisierung in Bezug auf die Leistung viel besser sein als jedes handgeschriebene SQL in Ihrer Java-Quelle. Daher sehe ich keinen Grund für eine nicht triviale Anwendung, ORM NICHT zu verwenden. Aber selbst dann sind Abfragen so stark eingeschränkt, dass es viel besser ist, eine noch komplexere ANSICHT zu erstellen und diese einer schreibgeschützten persistenten Klasse zuzuordnen, als Ausdrücke in einer bestimmten Abfragesprache im Code Ihrer Anwendung zu erstellen. Der VIEW-Ansatz nutzt auch Datenbankfunktionen und kann über die Materialisierung in Bezug auf die Leistung viel besser sein als jedes handgeschriebene SQL in Ihrer Java-Quelle. Daher sehe ich keinen Grund für eine nicht triviale Anwendung, ORM NICHT zu verwenden.