Si vous deviez motiver les «pros» des raisons pour lesquelles vous utiliseriez un ORM pour la direction / le client, quelles en seraient les raisons?
Essayez de garder une raison par réponse afin que nous puissions voir ce qui est voté comme les meilleures raisons
Réponses:
Rendre l'accès aux données plus abstrait et portable. Les classes d'implémentation ORM savent comment écrire du SQL spécifique au fournisseur, vous n'avez donc pas à le faire.
la source
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. =)
la source
Accélération du développement. Par exemple, éliminer le code répétitif comme le mappage des champs de résultat de requête sur les membres d'objet et vice-versa.
la source
Prise en charge de l'encapsulation OO des règles métier dans votre couche d'accès aux données. Vous pouvez écrire (et déboguer) des règles métier dans la langue de préférence de votre application, au lieu de langages de déclencheurs et de procédures stockées maladroits.
la source
Génération de code standard pour les opérations CRUD de base. Certains frameworks ORM peuvent inspecter directement les métadonnées de la base de données, lire les fichiers de mappage de métadonnées ou utiliser des propriétés de classe déclaratives.
la source
Vous pouvez facilement passer à un logiciel de base de données différent, car vous développez une abstraction.
la source
Pour que votre modèle objet et votre modèle de persistance correspondent.
la source
Le bonheur du développement, l'OMI. ORM fait abstraction de beaucoup de choses que vous devez faire dans SQL. Cela simplifie votre base de code: moins de fichiers source à gérer et les changements de schéma ne nécessitent pas des heures d'entretien.
J'utilise actuellement un ORM et cela a accéléré mon développement.
la source
Pour minimiser la duplication de requêtes SQL simples.
la source
La raison pour laquelle je me penche dessus est d'éviter le code généré par les outils DAL de VS2005 (mappage de schéma, TableAdapters).
Le DAL / BLL que j'ai créé il y a plus d'un an fonctionnait bien (pour ce pour quoi je l'avais construit) jusqu'à ce que quelqu'un d'autre commence à l'utiliser pour profiter de certaines des fonctions générées (dont je ne savais pas qu'elles étaient là)
Il semble que cela fournira une solution beaucoup plus intuitive et plus propre que la solution DAL / BLL de http://wwww.asp.net
Je pensais créer mon propre générateur de code SQL Command C # DAL, mais l'ORM ressemble à une solution plus élégante
la source
Compilation et test des requêtes.
À mesure que les outils des ORM s'améliorent, il est plus facile de déterminer l'exactitude de vos requêtes plus rapidement grâce à des erreurs de compilation et des tests.
La compilation de vos requêtes aide les développeurs à trouver les erreurs plus rapidement. Droite? Droite. Cette compilation est rendue possible car les développeurs écrivent désormais des requêtes dans le code en utilisant leurs objets ou modèles métier au lieu de simplement des chaînes d'instructions de type SQL ou SQL.
Si vous utilisez les modèles d'accès aux données corrects dans .NET, il est facile de tester l'unité de votre logique de requête dans les collections de mémoire. Cela accélère l'exécution de vos tests car vous n'avez pas besoin d'accéder à la base de données, de configurer des données dans la base de données ou même de créer un contexte de données complet. [EDIT] Ce n'est pas aussi vrai que je le pensais en tant qu'unité les tests en mémoire peuvent présenter des défis difficiles à surmonter. Mais je trouve toujours ces tests d'intégration plus faciles à écrire que les années précédentes. [/ EDIT]
C'est certainement plus pertinent aujourd'hui qu'il y a quelques années lorsque la question a été posée, mais cela ne peut être le cas que pour Visual Studio et Entity Framework où se trouve mon expérience. Plugin votre propre environnement si possible.
la source
Abstenez-vous le SQL 95% du temps, donc tout le monde dans l'équipe n'a pas besoin de savoir comment écrire des requêtes spécifiques à une base de données très efficaces.
la source
Je pense qu'il y a beaucoup de bons points ici (portabilité, facilité de développement / maintenance, concentration sur la modélisation métier OO, etc.), mais lorsque vous essayez de convaincre votre client ou votre direction, tout se résume à combien d'argent vous économiserez en utilisant un ORM .
Faites des estimations pour des tâches typiques (ou même des projets plus importants qui pourraient être à venir) et vous obtiendrez (espérons-le!) Quelques arguments pour le changement qui sont difficiles à ignorer.
la source
Niveaux .net utilisant des modèles de code smith
http://nettiers.com/default.aspx?AspxAutoDetectCookieSupport=1
Pourquoi coder quelque chose qui peut être généré aussi bien.
la source
Convainquez-les du temps / argent que vous économiserez lorsque des changements seront apportés et vous n'avez pas à réécrire votre SQL puisque l'outil ORM le fera pour vous
la source
Je pense qu'un inconvénient est que l'ORM aura besoin d'une mise à jour dans votre POJO. principalement lié au schéma, à la relation et à la requête. Ainsi, le scénario dans lequel vous n'êtes pas supposé apporter des modifications aux objets de modèle peut être dû au fait qu'il est partagé entre d'autres sur le projet ou le client et le serveur en noir et blanc. dans de tels cas, vous devrez le diviser en deux niveaux, ce qui nécessitera des efforts supplémentaires.
Je suis un développeur Android et comme vous le savez, les applications mobiles ne sont généralement pas de taille énorme, donc cet effort supplémentaire pour séparer le modèle pur et le modèle affecté par l'ORM ne semble pas valoir la peine.
Je comprends que cette question est générique. mais les applications mobiles sont également incluses dans un parapluie générique.
la source