La raison la plus importante d'utiliser un ORM est que vous puissiez avoir un modèle commercial riche et orienté objet tout en étant capable de le stocker et d'écrire rapidement des requêtes efficaces sur une base de données relationnelle. De mon point de vue, je ne vois aucun avantage réel qu'un bon ORM vous offre par rapport à d'autres DAL générés autres que les types avancés de requêtes que vous pouvez écrire.
Un type de requête auquel je pense est une requête polymorphe. Une simple requête ORM peut sélectionner toutes les formes de votre base de données. Vous récupérez une collection de formes. Mais chaque instance est un carré, un cercle ou un rectangle selon son discriminateur.
Un autre type de requête serait celui qui récupère avec empressement un objet et un ou plusieurs objets ou collections associés en un seul appel de base de données. Par exemple, chaque objet de forme est renvoyé avec ses collections de sommets et de côtés remplies.
Je suis désolé de ne pas être d'accord avec tant d'autres ici, mais je ne pense pas que la génération de code soit une raison suffisante en soi pour aller avec un ORM. Vous pouvez écrire ou trouver de nombreux bons modèles DAL pour les générateurs de code qui n'ont pas la surcharge conceptuelle ou de performances que font les ORM.
Ou, si vous pensez que vous n'avez pas besoin de savoir comment écrire du bon SQL pour utiliser un ORM, encore une fois, je ne suis pas d'accord. Il est peut-être vrai que du point de vue de l'écriture de requêtes uniques, il est plus facile de s'appuyer sur un ORM. Mais, avec les ORM, il est beaucoup trop facile de créer des routines peu performantes lorsque les développeurs ne comprennent pas comment leurs requêtes fonctionnent avec l'ORM et le SQL dans lequel elles se traduisent.
Avoir une couche de données qui fonctionne avec plusieurs bases de données peut être un avantage. Ce n'est cependant pas une question sur laquelle j'ai dû compter souvent.
En fin de compte, je dois répéter que d'après mon expérience, si vous n'utilisez pas les fonctionnalités de requête plus avancées de votre ORM, il existe d'autres options qui résolvent les problèmes restants avec moins d'apprentissage et moins de cycles de processeur.
Oh oui, certains développeurs trouvent que travailler avec les ORM est amusant, donc les ORM sont également bons du point de vue de la satisfaction des développeurs. =)