2008-10-07 5 views
11

L'expressivité des langages de requête (QL) fournis avec les ORM peut être très puissant. Malheureusement, une fois que vous avez une flotte de requêtes complexes, puis un problème de données ou de schéma énigmatique se pose, il est très difficile d'obtenir l'aide DBA dont vous avez besoin? Ici, ils sont, une partie de l'équipe qui évolue la base de données, mais ils ne peuvent pas lire l'application QL, et encore moins suggérer des modifications. Je finis généralement par extraire le SQL généré hors du journal pour eux. Mais alors, quand ils recommandent des changements, comment cela se rapporte-t-il au QL original? Le processus n'est pas un aller-retour.Le mappage O/R en vaut-il la peine?

Donc, après une décennie de promotion de la valeur des ORM, je me demande maintenant si je devrais écrire mon SQL manuellement. Et peut-être que tout ce que je veux vraiment que le framework fasse est d'automatiser autant que possible le marshaling de données.

Question: Avez-vous trouvé un moyen de gérer le problème d'aller-retour dans votre organisation? Existe-t-il un cadre SQL-marshaling qui évolue bien et se maintient facilement?

(Oui, je sais que SQL pur pourrait me lier au vendeur de base de données. Mais il est possible d'écrire compatibles avec les standards SQL.)

+1

Matière à réflexion, voici l'article de Ted Neward intitulé «Le Vietnam de l'informatique»: http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx –

Répondre

6

Je pense que ce que vous voulez est une solution qui maximise les avantages d'ORM sans vous empêcher d'utiliser d'autres moyens. Nous avons beaucoup le même problème que vous dans notre application; requêtes très lourdes et un grand modèle de données. Compte tenu de la taille du modèle de données, ORM est inestimable pour la grande majorité de l'application. Cela nous permet d'étendre le modèle de données sans avoir à faire beaucoup d'efforts pour maintenir des scripts SQL. De plus, et vous avez abordé ce sujet, nous soutenons quatre fournisseurs de bases de données, donc l'abstraction est agréable. Cependant, il y a des cas où nous avons dû régler les requêtes manuellement, et puisque nous avons choisi une solution ORM flexible, nous pouvons le faire aussi. Comme vous le dites, ça nous échappe quand nous en avons besoin, et nous nous contentons de rassembler des objets pour nous. Donc, en bref (oui, bref) oui, ORM vaut le coup, mais comme toutes les solutions à un problème, ce n'est pas une panacée.

5

En général, les ORM augmentent la productivité des développeurs beaucoup donc je d les utiliser à moins qu'ils ne soient devenus un plus gros problème que ce qu'ils valent. Si la majorité de vos tables sont suffisamment grandes pour que vous ayez beaucoup de problèmes, envisagez d'abandonner l'ORM. Je ne dirais certainement pas que les ORM sont une mauvaise idée en général. La plupart des bases de données sont assez petites et la plupart des requêtes sont assez simples pour qu'elles fonctionnent bien.

J'ai résolu ce problème en utilisant des procédures stockées ou SQL à la main uniquement pour les requêtes peu performantes. Les administrateurs de bases de données aiment les procédures stockées car ils peuvent les modifier sans vous le dire. La plupart (sinon la totalité) des ORM vous permettent de mélanger manuellement des procédures SQL ou stockées.

2

Aujourd'hui, les frameworks O/R, comme vous le connaissez, supportent l'option de définition manuelle de certaines requêtes ((N) Hibernate fait). qui peut être utilisé pour des parties complexes de schémas, et pour les parties directes, utiliser l'ORM tel que fourni par le framework.

Une autre chose que vous pouvez vérifier est le framework iBatis (http://ibatis.apache.org/). Je ne l'ai pas utilisé, mais j'ai lu qu'il est plus proche de SQL et que les gens connaissent bien les bases de données et SQL préfère le framework ORM complet comme hibernate, parce qu'il est plus proche d'eux que le concept complètement différent d'ORM.

Questions connexes