La force d'un ORM est qu'il vous permet de modéliser le comportement d'une application à l'aide de techniques orientées objet. Dans un monde soigneusement conçu, vous disposez d’une couche de l’application où le langage de l’entreprise correspond parfaitement au langage de l’équipe de développement. L'ORM est un catalyseur de cela, si l'ORM est utilisé judicieusement.
La faiblesse est que le nombre de personnes qui bénéficient réellement d'une programmation orientée objet est plutôt réduit. Beaucoup de gens écrivent des spaghettis et des boulettes de viande, avec des objets fortement couplés qui ont peu de comportement et qui aboutissent à des classes hideuses "Service" et "Manager" à 8000 lignes, et ce code est souvent si compliqué que tout le monde a peur. de le changer parce qu'ils ne peuvent pas comprendre quels seront les effets secondaires.
De plus, beaucoup de gens ne comprennent pas vraiment le modèle relationnel. Un ORM ne les aidera pas à l'obtenir, et cela ne les aidera pas en faisant abstraction du modèle relationnel. Cela vous permet simplement de vous concentrer dès le début sur votre couche de domaine et de bien le faire avant de vous préoccuper de la conception de la base de données. S'ils sont bien appliqués, à l'aide d'outils de migration de schéma judicieux, ORM peut vous aider à empêcher l'accumulation de dettes de code.
J'ai construit des applications dans lesquelles un ORM conservait un code d'application simple, lisible et testable, avec des performances raisonnables. J'ai également maintenu des applications où le modèle était mal utilisé et le code compliqué, indestructible, lent et fragile; il s'avère que l'ORM lui-même a peu à voir avec cela, sauf qu'au lieu d'écrire un code incorrect qui modélise mal le domaine d'application, l'équipe d'ingénierie héritée écrit un code incorrect qui modélise mal le domaine d'application ET un code de couche de service qui néglige l'ensemble la valeur que leur ORM pourrait leur fournir.
Les ORM ne vous rendront pas plus intelligent, mais entre les mains du bon développeur, vous pouvez générer un code plus facile à gérer et de meilleure qualité.