|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() ![]() |
Bonjour,
Si vous maitrisez un ORM, y a-t-il des cas où vous préférez ne pas utiliser d'ORM, et donc de développer en SQL je pense ? Merci,
__________________
Pierre8r |
|
00
|
|
|
#2 |
![]() ![]() |
Oui.
Je préfère nettement maîtriser la partie SQL de mes programmes et je fais l'architecture de la BDD avant le programme ; pas question que ce soit l'ORM qui crée les tables ! En plus les ORM semblent avoir la mauvaise manie de vouloir réinventer un pseudo SQL pour faire les requêtes par morceaux et il est bien plus rapide de faire la requête en SQL natif et demander à l'outil du programme qui s'interface avec le SGBD (même si c'est un ORM) de lancer les requêtes écrites en SQL natif.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#3 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 958 ![]() |
Lisez ceci : http://img1.lemondeinformatique.fr/f...s-epaisses.pdf
Vous serez convaincu que le ORM constituent une véritable plaie en matière de performance et à long terme s’avèrent plus couteux à tous niveau (temps de codage, maintenance, performances...) C'est pourquoi on les qualifient de guerre du Vietnam ! En sus vous pouvez avoir une bonne indication des performances catastrophiques d'un ORM an lisant cet article : http://www.ormbattle.net/ Bref, un ORM comme nHibernate est 24 fois plus lent pour un simple INSERT que le SQL !!! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
20
|
|
|
#4 |
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 36 ![]() |
et oui, c'est vraiment catastrophique.
Il y a 20 ans on programmait avec de l'IMS et du PL1 et ca dépotait severe Apres on a fait du Cobol avec du DB2 et du relationnel, c'etait plus lent mais ca allait encore. Apres on a fait du java et c'etait lent. Maintenant on a ajouté des ORMs et là sur des machines surpuissantes, j'ai des batchs qui tournent aux memes vitesses qu'il y a 20 ans sur des machines équivalentes à des Pentium 75 Mhz avec 8Mo de RAM. Il y a 4 ou 5 ans, j'avais un collegue qui vient tout fier me dire j'ai un batch qui insere 160000 lignes de données et qui fait des calculs de cumul de CA en 10 minutes... Super j'ai pris le meme fichier, j'ai fait un batch Cobol, ca faisait la meme chose en 38 secondes chrono... Vive le progres ! |
|
|
10
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 641 ![]() |
En même temps les ORM n'ont jamais été fait pour faire des pgm batch.
Ils ont leur utilité quand on traite 1 élément (ligne), en facilité de dev. Par contre au delà de ça je préfère utiliser du sql. |
|
|
00
|
|
|
#6 |
![]() ![]() |
Et voilà ! Ça ne sert qu'à ça ! et encore, comme j'ai dit plus haut, c'est plus rapide d'écrire une requête SQL qu'avec le pseudo SQL saucissonné des ORM !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#7 |
![]() ![]() |
Et encore, sur un applicatif tout le SQL devrait être dans des vues et procédures stockées, l'application n'appelant que ces dernières en envoyant simplement des paramètres.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 641 ![]() |
Citation:
Vu que vous n'avez strictement aucune requête à écrire, pas de synchronisation d'objet pour changer de couche, etc. Je veux bien qu'on tappe dessus, mais il faut quand même rester objectif sur les possibilités qu'offre un ORM. |
|
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Inscription : septembre 2006 Messages : 2 291 ![]() |
Un ORM n'est qu'un outil : il ne faut pas le rendre responsable des manquements de ceux qui l'utilisent à tort et à travers.
Toutes les applications ne bénéficient pas d'un ORM (et même dans une application toutes les fonctionnalités) : les détracteurs ont tendance à prendre des exemples où l'intérêt d'utiliser un ORM est plus que discutable. Et s'il y a bien un manquement chez les vendeurs d'ORM, c'est de n'offrir aucune méthodologie qui permette de distinguer clairement les conditions "GO - NO GO". |
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Inscription : septembre 2003 Messages : 624 ![]() |
En même temps c'est un forum SGBD ...
C'est comme proposer un language de script sur un forum C++. Je dirais que peut importe la technologie, ce qui compte c'est la personne qui l'utilise. L'ORM comme le fait de développer énormement dans le code vient des lacunes des bases de données pour gérer les développements quoiqu'en disent les évangélistes SGBD. Et comme les SGBD ne sont pas des plateformes de développement acceptables, on a tendance à ne les utiliser que pour le stockage. Parce que pour des consérations de gestion de projet, ça enlève une techno finalement peut compatible avec les autres (quand vous débuggez un code en Java et qu'il apelle une procédure stockée, vous ne pouvez pas entrer dans cette procédure) et surtout qu'en général personne n'a les deux compétences (SQL + le language de dev). J'ai vu un exemple où la majorité du code métier était en SQL et ça n'évite en rien les dérives. |
|
|
01
|
|
|
#11 | |
![]() ![]() |
J'ai vécu quelques mésaventures avec Hibernate utilisé par le framework Seam l'an dernier.
Un exemple de ce que je disais ici plus haut : c'est plus facile en SQL pur ! Vous pouvez lire toute la discussion si ça vous intéresse pour comprendre la galère ce cette usine à gaz ! Un autre exemple sur la soi-disant facilité apportée par l'automatisation du mapping ! Et dans la même discussion, encore un exemple concret d'une requête un peu complexe impossible à faire avec Hibernate et relativement facile à faire en SQL pur. Citation:
Bref, après quelques mois de galère, j'ai redéveloppé entièrement le projet en PHP avec Zend Framework pendant ma semaine de vacances de Noël et avec des modèles plus simples et des requêtes en SQL natif. Pour ne pas parler que de mes mésaventures avec Hibernate, j'ai aussi vu récemment plusieurs messages de personnes qui avaient des problèmes pour faire fonctionner, ou simplement écrire, des requêtes relativement simples avec Doctrine. Non vraiment, jusqu'ici, je n'ai vraiment pas vu grand chose de positif aux ORM que j'ai rencontrés !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 641 ![]() |
C'est pour ce genre de problème que l'on met en place un projet avec ... un architecte java.
Je ne dirais pas le contraire qu'un orm te bride d'une certaine manière sur les possibilités de modélisations. Après selon le projet, ce bridage est plus ou moins critique, et le contournement peut ou non être acceptable. Faut pas oublier quand même que tu peux mapper des vues ... déporter les traitements de type batch / complexe dans des procStock, etc... Mixer les deux approches n'est pas si débile en soit il faut juste avoir une équipe qui tienne la route => laissez les traitements simple à l'orm, ensuite déporter les requêtes / objet complexe dans des vues et si vraiment nécessaire faire des traitements via proc-stock / pgm batch appelé via proc-stock. Fin bref, je suis assez d'accord sur l'interprétation de JeitEmgie et un peu sur celle de Jetser. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com