|
|||||||
| Persistance Forum d'entraide pour la persistance en Java : base de donnée, xml, mapping orienté objet, ... Posez vos questions sur iBatis, JDO, XmlBeans, Castor, JAXB, XStream, ... |
|
|
Publicité ' | |||||||||||||||||||||
|
|
|
Outils de la discussion |
|
|
#21 | |
![]() ![]() |
Citation:
Ils font comment ? Ils codent tout dans des proc stockées et ont un code pour Oracle, un pour SQL Server, un pour DB2, .... Même question côté SAP et autres BusinessObject, ..... C'est vraiment pas sérieux, sincèrement
__________________
http://ego.developpez.com |
|
|
|
00
|
|
|
#22 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 170 ![]() |
Citation:
Il n'existe aucune requête même parmi les plus simples qui soit intéropérable entre les différents SGBDR.... Penser que l'ORM gérera la chose est un non sens..... Mes nombreux audits m'ont montré qu'en tentant de faire cela, les éditeurs nivelaient le système tellement vers le bas que plus aucune montée en charge n'était possible ! 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 * * * * * |
|
|
00
|
|
|
#23 | |
![]() ![]() Inscription : novembre 2006 Messages : 5 087 ![]() |
Citation:
Je suis d'accord avec toi, c'était une forme (extraterrestre faut croire) d'humour... je ne suis pas attaché au passé, mais je ne l'oublie pas pour autant... les bonnes fondations permettent de bâtir haut et robuste
|
|
|
|
00
|
|
|
#24 | |||
|
Expert Confirmé
![]() Inscription : août 2008 Messages : 1 716 ![]() |
Citation:
Citation:
Cependant bien plus important, l'implémentation transactionnelle des éditeurs est différente. Comment les outils de mapping gèrent ils ces spécificités ? Des liens vers de la doc sont bien venus pour ma culture personnelle. Pour moi l'indépendance des bases est parfois un réel besoin client, mais le plus souvent juste une commodité pour les éditeurs de logiciels ou d'applications dont le client n'a que faire. Et qu'en est il des bases (et c'est souvent le cas) exploitées par plusieurs applications ? Comment la 2ème application qui n'est pas développée dans le même langage peut elle bénéficier du développement codée dans le layer par la 1ere ? Citation:
Pour moi, c'est une seule requête (ou au max très peu) pour répondre à une question (généralement complexe), et pas une multitude de requêtes simplistes dans des boucles. |
|||
|
|
00
|
|
|
#25 | |
|
Expert Confirmé
![]() ![]() |
Citation:
Bref le vrai travail d'un ORM est vraiment de faire coller des structures de données objet en relations. A mon sens le mapping est bien plus important que le langage de requête. JPQL c'est bien etc, mais en fin du compte, ça existe déjà depuis très longtemps (le SQL). Certes ils est plus riche (opérateur new, member of, is empty, et bien plus), mais en fin de compte on pourrait s'en tenir au SQL.
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
|
|
00
|
|
|
#26 |
![]() ![]() Inscription : novembre 2006 Messages : 5 087 ![]() |
C'est tout à fait vrai...
Le mapping est LE point important de la modélisation. On se concentre ici sur l'aspect fonctionnel des données, il ne s'agit pas de mapper tous les "Set" issus de toutes les relations possibles (liées aux clés étrangères de tables sous-jacentes). On le fait une fois (bien) et on l'utilise partout. Il est largement plus agréable de travailler avec des objets dans un langage objet que d'avoir à N endroits besoin de mapper les colonnes d'un ResultSet vers les types correspondant du langage. Sans compter que là, on retrouve toutes les aberrations liées aux différentes implémentations d'un même type (Date en est un parfait exemple) qui rendent difficile le portage d'une DB vers une autre. Ensuite, il y a les requêtes (de recherche ou autre). Ici, on peut faire tout ce qui est possible en SQL, il n'a jamais été dit qu'un ORM imposait sa façon de faire, on peut également "mapper" automatiquement une requête native vers un objet... |
|
|
00
|
|
|
#27 | |
![]() ![]() Inscription : novembre 2006 Messages : 5 087 ![]() |
Citation:
Tout dépend des contraintes liées au partage entre plusieurs applications. Dans le cas d'applications java, on peut passer (par exemple) par des EJB façade pour gérer ça proprement. Si on a d'autres langages, les web services peuvent également apporter des solutions... Les procédures stockées également... Il y a N façons de faire, il ne s'agit pas de dire de facto qu'une est LA solution est les autres de la daube (façon SQLPro), ça ne sert personne, surtout pas l'auteur d'une telle affirmation qui le rend peu crédible |
|
|
|
00
|
|
|
#28 |
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 577 ![]() |
Et moi je n'utilise un ORM, enfin un mapper plutôt (iBatis) uniquement pour ne pas avoir à écrire trop de plomberie entre la conversion d'une requête JDBC en objet.
Par contre le lazy-loading et les proxys sont tout ce que je déteste en programmation. A titre d'exemple je suis techniquement incapable de considérer des POJO hibernates comme des objets métiers. C'est un débat philosophique ensuite. |
|
|
00
|
|
|
#29 |
|
Membre Expert
![]() Inscription : avril 2004 Messages : 1 247 ![]() |
Qu'est-ce que tu entends par "trop de plomberie" ?
|
|
|
00
|
|
|
#30 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 253 ![]() |
Je n'utilise pas d'ORM, pour autant, je n'estime pas que je fais de la perte de temps. La création des mappings n'est faite qu'une fois également, comme si j'avais un ORM. Je ne comprends pas cet argument qui dit que lorsqu'on n'utilise pas d'ORM, il y a 3000 mappings à faire.
L'argument de la portabilité de la base de données est beau dans les faits, mais perd de son ampleur dans la réalité. Les deux réelles applications à ceci sont la possibilité laissée au client d'utiliser le SGBDR de son choix et la possibilité de changer sa base de données quand on le souhaite. Ceci me pose deux problèmes : on ne sait pas quelle est la base de données du client et l'on doit la supporter. Vouloir prôner l'universalité d'un système est beau dans l'idée, mais a de solide contre-arguments, tel les perfs misérables. Le jour où un ORM libre créera des stored procs (pour une quelconque BDD) à ma place à partir de mon code Java afin d'avoir l'avantage de la rapidité de développement et des perfs, j'envisagerai peut-être de passer aux ORM (cela existe déjà en système payant). En attendant, je reste à mon système qui, bien que très légèrement plus lent au développement, m'assure des performances excellentes et une séparation des problématiques extrêmement nette. |
|
|
00
|
|
|
#31 | |
|
Membre du Club
![]() Yannick Majoros Inscription : janvier 2007 Messages : 72 ![]() |
Citation:
|
|
|
|
00
|
|
|
#32 | |
|
Membre Expert
![]() ![]() Chris CamelArchitecte de système d'information Inscription : novembre 2006 Messages : 1 242 ![]() |
Citation:
|
|
|
|
00
|
|
|
#33 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 253 ![]() |
Au contraire, nous sommes deux à nous occuper du domaine : le programmeur SQL et moi-même.
Nous suivons quelques conventions comme retourner un maximum des ensembles de données identiques, quitte à les remplir par des NULL. Par exemple, si nous voulons uniquement les noms des clients des livres, la stored proc renverra par exemple : ID : rempli Prénom : rempli ou NULL si société Nom : rempli ou NULL si société Société : rempli ou NULL si particulier TVA : NULL Adresse : NULL etc. Si c'est cela que tu appelles avoir des vues métier, alors je dis oui. Rien à voir, mais il était pas autre part, ce sujet ? |
|
|
00
|
|
|
#34 | ||||
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 577 ![]() |
Citation:
Citation:
La raison est simple, on doit se limiter au plus petit dénominateur commun au niveau fonctionnalité ce qui veut dire quasiment tirer une croix sur le code serveur, de plus il faut tenir compte des spécificités des SGBDR au niveau des DDL entre autres de leur façon de gérer les clefs auto incrémentales et si on veut des fonctionnalités avancées comme la réplication multi-site, là ça peut devenir infernal. On ajoute à cela les nombreux tests nécessaires au support multi-base, le support client très dépendant de l'environnement de celui-ci, ça peut devenir une charge de travail astronomique pour un gain au final assez faible Citation:
Citation:
|
||||
|
|
00
|
|
|
#35 | ||
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 253 ![]() |
Citation:
- Tous les clients utilisent Oracle ? - Oui, boss, sauf un qui utilise MySQL - Bon, bah, à partir de maintenant, on ne supporte plus qu'Oracle alors. - Ah ben zut, boss on aura des perfs nulles avec notre ORM, et puis il nous faudrait un programmeur SQL, ce qui coûte un pont ! - Non, vous continuez comme ça, je trouverais bien quelque chose à dire aux clients inquiets des perfs : c'est mon job ; et pour le gars qui utilise MySQL, je le ferai passer à Oracle. Je connais bien la problématique. J'avais écrit une longue tartine qui l'incluait, mais au final, j'ai supprimé les trois quarts car c'était presque du hors sujet ici. Citation:
Pour cela, j'ai juste une version modifiée de DBUtils. Le mapping est fait assez rapidement, et sans me casser la tête. |
||
|
|
00
|
|
|
#36 | |
![]() ![]() Inscription : novembre 2006 Messages : 5 087 ![]() |
Citation:
En attendant, l'ORM a de beaux jours devant lui, et sûrement pas parce qu'il est mauvais et qu'on est tous des andouilles à suivre les modes Utiliser un ORM juste pour éviter de coder soit même des classes typées "Entity" en JDBC est déjà bien, même si c'est très limitant. Je préfère considéré l'ORM comme un super outil qui me permet de causer fonctionnel plutôt que table et laisse la "plomberie" (pour citer l'expression de _skip) au moteur (avec des possibilités de spécialisations par SGBDR via les "dialect"). Pour résumer, sans contraintes fortes de performances, je choisis l'ORM plutôt 2x qu'une. |
|
|
|
00
|
|
|
#37 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 253 ![]() |
Je ne dis pas cela et suis à mille lieues de le penser. L'expérience que j'en ai ne me convainc pas. Si sur 1000 développeurs, 800 utilisent un ORM, c'est qu'il a ses qualités. Je fais partie du reste qui en demande davantage.
|
|
|
00
|
|
|
#38 | |
![]() ![]() Inscription : novembre 2006 Messages : 5 087 ![]() |
Citation:
|
|
|
|
00
|
|
|
#39 | |
![]() ![]() |
Citation:
__________________
http://ego.developpez.com |
|
|
|
00
|
|
|
#40 |
![]() ![]() |
je suis attéré par l'extremisme de vos réactions et le design que certains proposent.
S'appuyer sur des proc stockées, c'est franchement pas la solution que j'ai vu dans ma vie d'informaticien depuis maintenant 16 ans. Je suis peut être moi aussi à côté de la plaque mais je ne crois pas avoir fait ou vu de projets avec des proc stockées. Luc Orient me corrigera mais dans notre boite il ne doit pas y en avoir et nous travaillons dans une TRES TRES grosse entreprise avec de TRES TRES GROS besoins en termes de volume et de transactions/seconde. Et je crois que ça marche.........me semble t-il. Et puis vous savez, l'informatique va vers de plus en plus d'abstraction et donc travailler au niveau objet même pour déclencher des requêtes en base me parait "normal" (sachant que malgré tout il y a SQL derrière). Mais qui sait, peut être qu'un jour il n'y aura même plus le SQL......oh zut, j'ai dit une grossièreté, non ![]() Pour ceux qui restent collé à leur SQL, vous vous trimballez, si vous faites du Java, avec vos ResultSet dans toute l'application ? Et pour celui qui fait des proc stock qui renvoie des NULL en fonction de l'objet retourné, moi je mettrai un zéro en terme de conception. Et mon exemple avec le "select new ClientSimple..." c'est justement fait pour ça = ne pas tout ramener si on n'a pas besoin de tout le Client. Mais peut être que ceux qui n'ont jamais utilisé d'ORM devraient au moins faire l'essai, pour voir et parler en connaissance de cause.
__________________
http://ego.developpez.com |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com