Quels types de projets de développement Web bénéficient de l'utilisation d'ORM?

10

Je commencerai par dire que j'ai fait 95% de mon travail de base de données en utilisant SQL. Récemment, j'ai fait des recherches sur divers ORM, tels que NHibernate et Doctrine.

Je peux voir les avantages de ne pas avoir besoin de connaître beaucoup de SQL et la portabilité de la base de données fournie par un ORM. Mais je peux aussi voir que la connaissance de SQL rendra le travail avec un ORM plus efficace et je ne peux penser qu'à une seule fois dans ma carrière que le plus grand changement d'une application serait le fournisseur de base de données.

Parce que je suis très à l'aise d'écrire du SQL et que je ne réalise apparemment pas les avantages souvent enseignés de l'utilisation d'un ORM, ma question aux gros utilisateurs d'ORM est la suivante:

Quels types de projets de développement Web profitent le plus de l'utilisation d'ORM?

Fred Wilson
la source
3
La réponse est "Tous". Mais ce n'est probablement pas ce que vous voulez savoir. Vous voudrez peut-être affiner votre question pour demander des informations plus spécifiques.
S.Lott
1
Pour moi, SQL est actuellement plus facile à produire mais c'est uniquement à cause de mon acclimatation (ou de mon ignorance). J'ai lu que l'ORM n'est pas toujours le meilleur choix car il est plus lent que le SQL normal; cependant, de nombreux développeurs ont déclaré que ce n'est généralement pas important. Je suis surtout curieux de connaître les projets les mieux adaptés à l'ORM. Je peux voir que la plupart des réponses seront probablement «toutes», et c'est très bien aussi. Je ne cherche pas de réponse précise. :)
Fred Wilson
Si vous ne demandez pas plus de détails, vous n'apprendrez pas grand-chose.
S.Lott

Réponses:

5

(Presque) toutes les applications bénéficient d'ORM.

Tout d'abord, je ne suis pas d'accord avec les avantages que vous donnez pour ORM .

  • L'utilisation d'ORM ne signifie pas nécessairement que vous n'avez pas besoin de connaître SQL. Une connaissance de SQL aidera à comprendre ce que fait réellement l'outil ORM, ce qui est particulièrement utile lors du débogage. De plus, SQL peut en fait être nécessaire pour développer des requêtes complexes qui dépassent les capacités de votre ORM choisi.
  • Et comme vous le dites, la portabilité est rarement un problème dans la vie réelle.

Au lieu de cela, les vrais avantages de l'ORM sont:

  • ORM fait gagner du temps au programmeur car il permet d'économiser des tonnes de logique CRUD en SQL
  • de nombreux ORM incluent une logique de mise en cache complexe, etc. qui est difficile à écrire et à déboguer. En plus de gagner du temps, cela peut améliorer la fiabilité et la maintenabilité de votre application (ou au moins vous faire gagner du temps qu'il vous faudrait pour obtenir les mêmes résultats)
  • les meilleurs ORM ont une communauté d'utilisateurs qui développent, entretiennent et soutiennent activement le produit. La communauté autour du SQL personnalisé est, au mieux, un peu moins concentrée sur les problèmes que nous devons résoudre.

Comme vous le commentez, l'un des inconvénients de l'ORM est la perte de performances. Cependant, cela peut généralement être compensé en dépensant plus de matériel.

En règle générale, le temps de programmation est plus cher que le matériel, donc ORM est généralement une bonne option au lieu de coder manuellement SQL.

ORM est le meilleur pour les applications avec beaucoup de logique de base de données CRUD assez simple. L'ORM est moins efficace pour :

  • Applications nécessitant peu ou pas d'accès à la base de données.
  • Applications largement dépendantes de requêtes complexes et très peu de logique CRUD simple
  • Situations où les performances sont critiques, mais où il n'y a aucune possibilité de déployer un matériel plus rapide

D'après mon expérience, ces situations sont rares. D'où ma réponse.

Kramii
la source
"L'utilisation d'ORM ne signifie pas nécessairement que vous n'avez pas besoin de connaître SQL." - Tellement vrai. L'un des avantages que je vois dans un environnement d'équipe est que nous pouvons concentrer les compétences SQL afin que tous les développeurs travaillant sur la couche métier ne soient pas des experts.
Fred Wilson
1
Pour les requêtes complexes, vous pouvez toujours revenir à SQL et écrire une requête SQL.
harsimranb
4

Je suis également à l'aise pour écrire SQL. Je suis également beaucoup plus à l'aise de ne pas avoir à écrire de SQL du tout, ainsi que de ne pas me soucier de la connexion, de la déconnexion, de la mise en commun, etc. dans une base de données.

Alors .. je répondrai au négatif de votre question. Les seuls projets de développement Web qui ne bénéficient PAS d'un ORM sont ceux qui ne parlent pas du tout à une base de données. Je pense que c'est la minorité (le cas échéant).

Otávio Décio
la source
+1: Je me considère également très compétent en sql, mais préfère toujours un OR / M. En fait, je dirais que vous devez absolument avoir une poignée sur sql pour faire bon usage d'un OR / M, sinon lorsque l'abstraction fuit, vous ne trouverez jamais le problème. "ne pas avoir besoin de connaître beaucoup de SQL" n'est pas une fonctionnalité. Pour moi, il s'agit de gains de productivité et de faire en sorte que le compilateur trouve les problèmes, pas le temps d'exécution, et les OR / M (en particulier les plus récents génériques / basés sur linq sont excellents).
Brook
@Brook - Je suis entièrement d'accord. L'utilisation d'un OR / M ne signifie pas que la connaissance SQL est facultative.
Otávio Décio
2

Sur la base de mon expérience avec ASP.NET WebForms, je proposerais que les projets Web utilisant des cadres Web avec état bénéficient le plus de l'utilisation d'un ORM.

Avec un cadre dynamique, le balisage est généré automatiquement en arrière-plan, en fonction de la hiérarchie des contrôles serveur actifs. Il est tentant de charger ces contrôles et de conserver automatiquement leur état dans la base de données. C'est là que l'ORM aide.

Vous résumez en quelque sorte la fin du pipeline (sortie HTML) et cela invite naturellement à traiter le début (source de données) de la même manière afin de ne rester dans votre logique métier que dans le code d'application.

Non pas que je ne dis pas que c'est une bonne façon de faire les choses. C'est juste là où l'ORM s'intègre naturellement.


la source
2

Dans les applications où vous avez un grand modèle d'objet très connecté, un ORM vous évite d'écrire les mêmes jointures encore et encore.

Un autre avantage est le chargement paresseux, où vous voulez qu'une API retourne un graphique d'objet où le client de l'API n'utilisera qu'un sous-ensemble de ce graphique.

Paul Sanwald
la source
1

Je crois que vous confondez un ORM avec un DBAL .

Le concept auquel vous faites référence est une couche d'abstraction de base de données (DBAL) qui vous permet d'écrire un "sql" portable qui ne dépend pas du système de base de données sous-jacent.

Un ORM d'autre part (qui est (presque?) Toujours construit au-dessus d'un DBAL):

Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language. (Wikipédia)

En termes simples, un ORM vous permet de convertir les données d'une base de données plate en une représentation d'objet gonflée.

Craige
la source
Merci pour la clarification. La principale raison pour laquelle je suis passé à ORM est de me concentrer davantage sur la POO et de m'éloigner de l'écriture d'autant de SQL si cela a du sens pour certains projets.
Fred Wilson
1

Les projets qui ne bénéficieraient pas de l'ORM seraient:

  • ceux qui ne sont pas orientés objet;
  • ceux qui n'ont pas besoin de conserver les données;
  • ceux qui utilisent une base de données orientée objet, n'ont donc pas besoin de couche de mappage supplémentaire;
  • ceux qui utilisent une solution NoSQL sans relation;
vartec
la source