IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Persistance des données Java Discussion :

Quel outil de mapping objet-relationnel choisir ?


Sujet :

Persistance des données Java

  1. #21
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Citation Envoyé par nicorama Voir le message
    Le défaut, c'est qu'il faut tout écrire
    Pas si tu utilises une lib genre XStream

  2. #22
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Pas si tu utilises une lib genre XStream
    J'ai essayé XStream, et c'est pas super sexy. En plus de rajouter 350ko à mon applet.
    Mon problème est que j'ai des objets contenant des objets contenant des listes d'objets... à un point tel qu'il faille éviter les requêtes de 5Mo.

    Si j'ai un établissement de 2000 élèves, XStream peut envoyer en XML l'objet listeEleve, mais incluera des données sur chaque élève. Alors que l'id me suffit.

    Doit bien y a voir de quoi bidouiller (si je me souviens bien XStream comporte 3 modes de fonctionnement), mais au final j'évite de me reposer sur une techno pour le moins peu encline à prospérer pendant 5-10 ans.

    D'ailleurs je change ma signature

  3. #23
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Sinon, pour des truc rapides et bas niveau en ayant un maximum de contrôle, rien ne vaut Spring JDBC : une bibliothèque qui vous fera oublier les horreurs de JDBC
    Personnellement, je trouve JDBC extrêmement sympa, au moins, on sait ce qu'il fait, où et quand il le fait... même si j'utilise les EJB3 et que je trouve ça super sympa, il y a des fois, on aimerait savoir ce qu'il fait et quelle couche est impliquée dans le problème...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #24
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Personnellement, je trouve JDBC extrêmement sympa, au moins, on sait ce qu'il fait, où et quand il le fait...
    JDBC, Sympa, dans la même phrase



    Sinon, oui, justement, le point fort de JDBC est qu'il est bas-niveau, et qu'il ne fait pas de la magie derrière ton dos ... mais il est trop pénible à utiliser ... correctement du moins, d'où ma proposition de Spring JDBC qui se propose d'ôter l'aspect casse-gueule de JDBC en le rendant sympa

  5. #25
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    JDBC, Sympa, dans la même phrase

    Excellent !
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #26
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Citation:
    Envoyé par djo.mos
    JDBC, Sympa, dans la même phrase



    Excellent !
    ???
    J'utilise pas directement JDBC mais via un petit JDBCManager qui tient en 30-50 lignes. Je réduit considérablement le code dans les autres classes en gardant le contrôle de ce que je fait.
    Pas envie d'aller me taper tout Hibernate avec ses fichiers de configuration.

  7. #27
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Bonjour !

    Personnellement, je conseille hibernate qui peut te fournir une première approche "facile" de tout ce qui touche à JPA et au mapping O/R. Disons que pour commencer à appréhender, c'est un excellent outil dans le sens où :

    • Il est *assez* simple à mettre en place, et à utiliser
    • Il possède une des docs Frameworks les plus abouties que j'ai vues à ce jour (et en français)
    • Les rudiments sont rapides à assimiler, en progressant dans le domaine tu pourras te rendre compte qu'hibernate offre moults possibilités supplémentaires et tu pourras les utiliser au fur et à mesure que tes besoins évoluent
    • Il permet de réaliser rapidement des couches de persistances très performantes et permettant une conception très souple de tes applications


    Nous avons l'habitude de travailler dans une architecture classique disons du type Front + Services + DAOs les services et daos étant exposés par des interfaces et leur implémentations sont des POJOs, à part pour les DAOs qui possèdent une sessionFactory, mais ça s'arrête là. Hibernate ne dépeint à aucun moment sur le reste de notre application et on pourrait donc passer à du iBatis ou du JDBC demain en se contentant de réécrire les implémentations des DAOs. (Ca c'est pour convaincre les sceptiques qui disent que le fait d'avoir des proxys hibernate fout le boxon dans toutes les couches d'une application).

    Pour garder en souplesse, tu peux utiliser Spring qui est un excellent outil pour gérer tes transactions, sessions, etc...

    Sinon au niveau de l'utilisation d'hibernate tu peux décrire en quelques lignes en XML les liens entre tes objets métier et ta base de donnée. Tout est paramètrable, et pour un peu que tes objets correspondent avec un minimum de logique à ton schéma de base de donnée tu ne devrais pas avoir de problèmes à tout décrire. Sinon si tu es en Java 5+ et que tu n'attaches pas d'importance à ce genre de détails tu peux gagner un temps monstre en mettant des annotations dans tes objets métiers.

    Et niveau utilisation c'est du pur bonheur, après très peu de configuration tu récupères et enregistre tes données aussi simplement que tu fais des get et sets sur des objets Java. (J'éxagère à peine).

    Quant aux performances, je les trouve personnellement excellentes, pour un peu qu'on se donne la peine d'essayer d'optimiser un minimum la chose. Rien qu'en mettant un EhCache et en configurant des commits par lots ce qui prend peu de temps on se retrouve avec quelque chose de très performant.

    Après énormément de gens crachent sur Hibernate à cause de ses performances, et c'est à peu près sûr, il ne sera jamais aussi performant qu'une couche JDBC classique. Mais ne plus écrire une seule ligne de SQL est à ce prix. Personnellement je préfère sacrifier 15% de performances et gagner 70% en temps de développement et en maintenabilité, mais tout dépend de ton contexte d'utilisation (pourcentages arbitraires, je ne me base sur rien d'autre que mon expérience personnelle pour dire ça).

    Enfin voilà, après je manque d'expérience sur les concurrents, mais j'ai utilisé un autre Framework maison qui s'approche d'un hibernate, des EJB2 (pouah !), du JDBC classique et aucun ne m'a jamais apporté la même satisfaction qu'un Hibernate qui je pense reste le must en terme de rapidité de développement d'une couche de persistance. Le rapport qualité/prix est vraiment intéressant.

    PS : et je conseille de piloter tout ça avec Spring histoire de faire les choses proprement

  8. #28
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nicorama Voir le message
    ???
    J'utilise pas directement JDBC mais via un petit JDBCManager qui tient en 30-50 lignes. Je réduit considérablement le code dans les autres classes en gardant le contrôle de ce que je fait.
    Pas envie d'aller me taper tout Hibernate avec ses fichiers de configuration.
    C'était l'humour de djo.mos que je saluais, personnellement, je le répète, j'aime beaucoup JDBC
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #29
    Membre habitué

    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Points : 134
    Points
    134
    Par défaut
    Salut,

    Perso, je te conseillerai bien Hibernate, parce qu'il est stable, et surtout bien documenté (tu n'auras pas trop de mal à trouver des tutos et des experts qui peuvent t'aider dans le domaine).
    Concernant JPA, c'est une bonne alternative, mais moins complete. J'ai écrit un billet sur le sujet "Hibernate ou JPA" (il date un peu...) :http://www.dotnetguru2.org/bmarchess...&c=1&tb=1&pb=1

    a+
    Bruno

  10. #30
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour à tous,

    j'ai eu l'opportunité d'utiliser Hibernate sur plusieurs projets et effectivement j'ai trouvé cela "simple" à mettre en place. Par contre si on veut bien optimiser la chose, et ce qui est indispensable à mon avis (pool de connexion...), là c'est moins simple et il faut avoir la bonne information.

    Je pense aussi que dans la mapping OMR il ne faut pas oublier Ibatis qui est très bien pour commencer cette approche. C'est un Hibernate like et light mais qui répond à beaucoup de besoins. J'ai eu l'occasion de le mettre en place dans une appli client en Eclipse RCP et on a eu aucun prb.

  11. #31
    Membre habitué
    Profil pro
    Administrateur système
    Inscrit en
    Mai 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur système

    Informations forums :
    Inscription : Mai 2002
    Messages : 144
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par jlechardeur Voir le message
    Je pense aussi que dans la mapping OMR il ne faut pas oublier Ibatis qui est très bien pour commencer cette approche.
    Merci jlechardeur. Quand je me suis intéressé aux outils D'ORM, ça m'a donné l'impression d'être une véritable jungle. J'ai mis beaucoup de temps à m'y retrouver dans cette foultitide d'implémentations, avant de m'arrêter sur iBatis. Moins connu mais simple et efficace. Je l'utilise actuellement sur un gros projet et le résultat est franchement là.
    Comparaison avec Hibernate à voir ici (en anglais): http://www.nofluffjuststuff.com/media.jsp?mediaId=27
    Si un jour on te reproche que ton travail n'est pas un travail de professionnel, dis-toi bien que l'Arche de Noé a été construite par des amateurs et le Titanic par des professionnels...

  12. #32
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Olé,

    Je suis toujours assez étonné qu'on ne parle jamais de Cayenne (http://cayenne.apache.org/) qui est un outil plutôt récent, et qui a la particularité de fournir un GUI très simple d'utilisation pour paramétrer le mapping (plus vraiment besoin d'aller directement touiller dans des fichiers de config XML ... en tout cas pour un mapping "simple").

    Pour l'avoir utilisé (sans aucune connaissance préalable de la problématique des ORM) je le recommande chaudement . Il est vraiment très simple à prendre en main ... sans être limité à un usage simpliste. Enfin .. je vous laisse juge en allant lire la doc !

    A+

  13. #33
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Est-ce réellement plus simple qu'un mapping hibernate avec annotations ? Perso, j'annote mes enties pour les agrégations, je définie un datasource. Et c'est fini. Hibernate va même jusqu'à générer la structure de la base automatiquement...

  14. #34
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Lorsque vous faites du Mapping, vous utilisez des outils UML style PowerAMC (PowerBuilder) pour mettre en phase le model et les données ?
    Ou votre IDE permet de faire des trucs automatiques ?

  15. #35
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour,
    Citation Envoyé par nicorama Voir le message
    Lorsque vous faites du Mapping, vous utilisez des outils UML style PowerAMC (PowerBuilder) pour mettre en phase le model et les données ?
    Ou votre IDE permet de faire des trucs automatiques ?
    En fait, en travaillant avec JPA, je ne fais pas exactement du mapping dans la mesure où je pars du Java et que j'ai pas de schéma existant: je modélise mon domain model en terme d'objets (PAO) et j'annote le tout par les annotations JPA, ce qui me permet ensuite de générer (automatiquement) le schéma correspondant dans la base de données.

  16. #36
    Membre confirmé Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Points : 500
    Points
    500
    Par défaut
    PochyPoch a fait un bon résumé de ce que je penses également quant à savoir une implémentation assez facile et qui te permet de bien garder la séparation entre toutes les couches. Pour ce qui est de la syntaxe des requêtes, tu fais en quelques lignes des requêtes qui t'aurais mis 2 jours à écrire.

    Dans notre projet, on a une architecture n-tiers et on a généré les fichiers mapping et le modèle avec un outil hibernate, on a mis une couche "gestion des données" par dessus qui peut être remplacer sans problème si on change d'ORM et tout se fait proprement.

    Tu peux paramétrer l'accès à chaque donnée comme bon te semble avec les fichiers XML.

    Bref, c'est ma première expérience avec un ORM et j'en suis très content! ET détail non négligeable, tu as une communauté assez vaste et il y a du monde pour te répondre à tes questions autant en français qu'en anglais.
    Mes logiciels n’ont jamais de bug. Ils développent juste certaines fonctions aléatoires.

  17. #37
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Citation Envoyé par ruscov Voir le message
    on a généré les fichiers mapping et le modèle avec un outil hibernate
    Quels outils, please ??? Il y en a des GPL de bon niveau ?

  18. #38
    Membre confirmé Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Points : 500
    Points
    500
    Par défaut
    Au moyen de Hibernate Tools
    Mes logiciels n’ont jamais de bug. Ils développent juste certaines fonctions aléatoires.

  19. #39
    lau14
    Invité(e)
    Par défaut
    Pourquoi les EJB (entity) n'ont pas été evoqués? C'est bien des objets de mapping avec gestion intégrée de la persistance non?

  20. #40
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bah peut être parceque ça date un peu (EJB 2) ,que ça a été viré de EJB 3 et remplacé par une solution infiniment plus propre, simple et flexible qui est JPA ?

Discussions similaires

  1. Réponses: 44
    Dernier message: 05/10/2011, 14h37
  2. Etat des lieux des outils de mapping objet/relationnel (ORM)
    Par Exsilius dans le forum Général Dotnet
    Réponses: 12
    Dernier message: 12/02/2008, 08h50
  3. Outil de mapping objet/relationnel OR not ?
    Par Exsilius dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 01/02/2007, 18h52
  4. Mapping Objet / Relationnel
    Par LordBob dans le forum Accès aux données
    Réponses: 7
    Dernier message: 27/10/2006, 14h42
  5. [SQL] Abstraction BDD et mapping objet/relationnel
    Par Invité dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 26/07/2006, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo