« Oracle rachèterait JBossSubversion# »

12 commentaires

Commentaire de: Chal [Visiteur]
La solution lorsque l'on conçoit et manipule des modèles complètement objet n'est t'elle pas d’utiliser des schémas de base ultra simple – à l’ extrême :
• un champ ID qui stocke l’identifiant
• un champ CONTENT qui stocke le contenu sérialisé (xml ou binaire)
et cela pour chaque « gros » objet (le jeu étant le découpage objet(s) table)

Florent.
12.02.06 @ 22:25
Commentaire de: Guyonnet-Duluc Matthieu [Visiteur] · http://spaces.msn.com/matthieu
Je pense aussi que

1. hibernate et batch ne font pas bon ménage
2. au-delà des compromis entre le modèle relationnel et sa traduction dans le monde objet, il y a pour les applications web un handicap : si on veut pas attacher la session hibernate on se retrouve avec des objets détachés et là il faut bien étudier les scénarios fonctionnels manipulant beaucoup d'objets pour utiliser le lazy-loading par exemple etc ...

on est loin de la solution miracle mais hibernate est un bon outil.
13.02.06 @ 09:53
Il y a une "impedance mismatch" irréconciliable entre modèle relationnel et modèle objet. Des frameworks comme (N)Hibernate, Neo ou même l'exaspérant Rails (pas de la faute de Rails, ni de Ruby, mais la cohorte des bloggers qui découvrent les langages dynamiques dix ans après tout le monde est assez fatigante) répondent assez bien à 90% des besoins, mais comme d'habitude les 10% qui restent entraînent des catastrophes.

Je reste assez sceptique quand je vois des moteurs SGBDO implémentés en frontal dans les frameworks, et effaré qu'on recommande de coller tout en blob avec un ID pour avoir un beau, un pur, un irréprochable modèle objet. A quoi bon utiliser une base dans ce cas ?
13.02.06 @ 17:19
Bon je me suis planté dans le lien de mon site, et en plus il n'a rien à voir, mais vraiment rien à voir avec l'informatique.
13.02.06 @ 17:20
Commentaire de: Stéphane [Visiteur]
Que les outils de mapping masquent le code SQL à générer, c'est bien. Qu'ils masquent le fait que les objets vivent en dehors de l'application, dans un "entrepôt" distant, auquels d'autres applications peuvent avoir accès, c'est plus dangereux.
Il ne s'agit même pas d'impédance mismatch, juste d'une réalité. Un objet, il faut aller le chercher, le modifier, le retourner (et gérer une éventuelle exception parce que entre temps quelqu'un l'a supprimé...).

Ce n'est pas pour rien, à mon avis, que des outils comme LLBLGen proposent à côté du mode "magique" (je charge une commande, et je récupère on ne sait comment ses items, son client...) un mode "explicite" (je charge une commande, et svp donnez moi aussi ses items mais pas son client).

Le mode magique est séduisant mais très pointu à piloter correctement, parce qu'il implique de comprendre parfaitement ce qui se passe derrière (une requête par item, ou une pour tous les items de la commande...?).

Elargissons le débat: l'abstraction "tout objet" a ses limites. Et fuit un peu. Par exemple, si myOrder.Customer = myCustomer, pourquoi myCustomer.Orders ne contient pas instantanément myOrder? Si je change myCustomer.Name="toto" et puis je rollback, pourquoi je ne retrouve pas la valeur initiale? Pourquoi c'est si dûr de faire une requête sur un graphe d'objets, et si facile de faire du SQL?
14.02.06 @ 08:36
Commentaire de: Ahmed KRIKET [Visiteur]
HIBERNATE n'est pas le problème...
Je suis assez d'accord avec ce qui a été dit, mais cela ne se limite pas à Hibernate. En effet, cela est vrai pour toutes les technologies qui masquent la complexité. Même si l'on connait bien Hibernate, mais que l'on ne connait pas le fonctionnement des bases de données alors on risque d'être confronté à de graves problèmes. Hibernate convient tout à fait à du batch, mais il faut le configurer et l'utiliser avec cette préoccupation là. Le gros problème est souvent que l'on met des "débutants" en pensant que puisque l'outil masque la complexité, alors c'est utilisable par tous. J'ai rencontré des projet qui avaient des problèmes similaires avec l'utilisation des EJB et services CORBA. Par ailleurs, les seules personnes techniques avec assez d'expérience et de recul qui seraient aptes à suivre les projets et à déceler les problèmes se reconvertissent en mangers ou administrarifs car les postes techniques ne sont malheureusement pas valorisés en France.
14.02.06 @ 12:15
Commentaire de: Thibaut Barrère [Membre] Email
L'extrait du bouquin de Joseph Chancellor (le fameux post de Sami en rapport avec LBLGen) le rappelle bien: l'OR/M c'est chouette, mais cela ne doit pas priver l'utilisateur:
- de connaître SQL un minimum et de se pencher dès le début du dév sur le type de requêtes générées par l'utilisation qu'on fait de la couche OR/M (avoir conscience des outer join and co)
- de surveiller la performance et la volumétrie générée dès le début du dév (manuellement, ou en mettant en place des mesures automatiques à l'intégration)

Bref, à utiliser avec précaution, mais ça ne génère pas nécessairement des catastrophes.
14.02.06 @ 15:33
Commentaire de: Franck Silvestre [Visiteur] · http://www.fylab.fr/blog/franck/
Il est certain que l'usage d'Hibernate ne dispense pas le développeur de connaître parfaitement le modèle relationnel et la technologie qui l'accompagne (SQL, jointures internes/externes,...). Comme le rappelle Sami, impensable de programmer avec Hibernate ou EOF sans activer les logs SQL permettant la détection des anomalies dans les requêtes, permettant d'adapter les paramétrages pour optimisation.

Ce constat est sans doute responsable de la difficulté de la mise en oeuvre d'outil tels qu'Hibernate : l'approche mapping O/R échoue à nous abstraire complètement du modèle relationnel sous-jacent et cela a deux impacts :
– l'utilisation d'un tel outil est complexe car elle nécessite deux niveaux de compétences élevés dans deux modèles conceptuels très différents,
– corollaire à ce qui précède : l'approche ORM valorise la sur-compétence de quelques développeurs plutôt que d'officier dans une meilleure répartition des compétences, tâches et responsabilités au sein d'un projet
...

La suite de la réflexion que m'a inspiré ce billet est sur mon blog, pour ceux que cela intéresse.
15.02.06 @ 12:13
Commentaire de: Altus34 [Visiteur]
Je suis tout a fait d'accord avec la remarque de Ahmed KRIKET.
Le problème ne viens pas d'hibernate il vient de la compétence des gens qui utilisent ce type de framework.

Dans l'article de Sami la dernière phrase m'a fait sursauter :
"La réécriture complète est malheureusement souvent la seule solution. Il n'est pas trop tard pour bien faire ..." !!!

En quoi une mauvaise utilisation d'hibernate entraine la réecriture ?

Dans la plupart des projets en echec que j'ai vus, l'echec était en grande partie organisationnel. Des gens avec peu de compétences qui n'arrivaient pas à capturer les requirements et à les transmettre. Une organisation des équipes calamiteuse, une communication d'autiste, et des développeurs qui se retrouvaient avec des modèles UML, sorties de l'esprit torturé de designeur/concepteur, soit disant OO.

Je pense que le gars qui pense faire de l'OO en ouvrant une application UML a un sérieux problème. Je constate que les meilleurs concepteurs OO sont des programmeurs ou des gens qui travaillent tous les jours avec des développeurs sur des problèmes concrets.

Je pense que la compétence en conception OO s'acquière sur le terrain en pratiquant le TDD et le DDD.

Bref je constate que les projets qui réussissent sont des projets qui sont organisés autour des méthodologies de type "Agile".

L'avenir est aux petites équipes de gens très compétents qui en s'appuyant sur des framework tres techniques seront capablent de livrer, très vite, de la fonctionnalité de qualité.

Mais ce n'est pas un discours que les decideurs veulent entendre car cela implique d'avoir des programmeurs très bien payés et une revalorisation de ce type de poste.

Ca me fait toujours mourir de rire quand un "Architecte" se pointe sur un projet pour poser les "fondations architecturales". Souvent c'est un gars qui ne programme plus depuis longtemps et qui se maintient difficilement à niveau en lisant des articles de vulgarisation.

Résultat des courses : généralement une architecture clé en main (genre recette de cuisine) déjà obsolète et qui tient rarement le choc lors de son utilisation par les développeurs.

Il est marrant de voir également le manque de feedback et de métriques sur les projets en général (certains objecteront que ce n'est pas très "industriel" ;)).

Bref a vouloir faire faire a des incompétents une Ferrari, avec les meilleurs outils du monde on ne produit généralement qu'une caisse a savon.






11.03.06 @ 02:29
Commentaire de: tux [Visiteur]
Je suis Architecte et malheureusement attristé de constater ce qui a été dit par Altus34. Je suis d'accord avec lui. C'est d'ailleurs pour ces raisons que lorsque je mets en place une architecture :
1) je participe au développement
2) je suis le projet jusqu'au bout (c'est à dire bien après sa mise en production)

Je suis choqué que ce ne soit pas partout comme ça.
29.11.06 @ 13:36
Commentaire de: flcpy [Visiteur]
Bonjour à tous,

La question est la suivante : dans une application lourde, (standalone, client/server, etc.), comment synchroniser élégamment les objets POJO de la couche présentation avec les objets du serveur. Un exemple tout bête : On affiche un graphe (au sens d diagramme) dans une fenêtre. Ses objets sont modifiés par d’autres clients. Comment les rafraîchir « automatiquement », « simplement » ?
Je déborde un chouille de la problématique énoncée dans l’article de Sami. Mais je pense que c’est un point important d’une architecture moderne (autre que WEB). ORM ou pas.
J’imagine plein de « machin » mais j’aimerais savoir si vous avez déjà étudié la question : la finalité du design de l’architecture, c’est quand même un petit peu ce que l’on présente à nos utilisateurs. Et j’aimerais que la rigueur des autres couches servent un peu. Voila sinon, j’ai plus de question.
07.06.07 @ 15:31
Commentaire de: Aurélien [Visiteur] · http://www.toupil.fr
Hibernate est rééllement un bon outil pour le mapping. Il y a une forte abstraction de la bdd ce qui est vraiment bien quand on programme en objet. J'utilise hibernate couplé à mysql pour mon site développé en JSP/servlets : http://www.toupil.fr et j'en suis tout à fait satisfait.
11.06.08 @ 17:42

Laisser un commentaire


Votre adresse email ne sera pas révélée sur ce site.

Votre URL sera affichée.
(Les retours à la ligne deviennent des <br />)
(Nom, e-mail & site Web)
(Autoriser les utilisateurs à vous contacter par un formulaire de message (votre adresse email ne sera not révélée.))
This is a captcha-picture. It is used to prevent mass-access by robots.
Please enter the characters from the image above. (case insensitive)