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

JPA Java Discussion :

relation entre JPA et Hibernate


Sujet :

JPA Java

  1. #1
    Membre confirmé
    Profil pro
    Président
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Président

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Par défaut relation entre JPA et Hibernate
    Salut,

    j'ai lu plusieurs article sur le JPA et l'Hibernate. mais, j'ai quelque question :

    - Est c'est que JPA est complémentaire à hibernate?
    - quelle est le plus intéressant?
    - Quelle sont les différent contexte d'utilisation de deux framwork?
    - Quelle est la relation entre eux?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut
    Salut je me lance en n'espérant ne pas trop t'embouiller,
    Est c'est que JPA est complémentaire à hibernate?
    JPA n'est pas complémentaire à hibernate, dans la mesure où jpa peut être utiliser avec d'autres outils ORM comme toplink et que hibernate est souvent utilsé sans jpa. Par ailleurs jpa est fortement inspiré de hibernate.
    - quelle est le plus intéressant?
    En fait jpa est une couche qui vient s'interfacer entre la couche image de ta base de données ( utilisant dao) et la couche jdbc. C'est un orm standardisé par sun . Avec jpa nous pouvons changé de basés de donnés juste en modifiant un fichier de persistance et sans toucher a la moinde ligne de notre code . Elle est pas belle la vie ?
    - Quelle sont les différent contexte d'utilisation de deux framwork?
    - Quelle est la relation entre eux?
    C'est n'est pas un framework mais un api plein d'interfaces (Et pour cause).
    Comme tu l'as dit hibernate en fournit une implémentation tout comme toplink .
    Voila

  3. #3
    Membre confirmé
    Profil pro
    Président
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Président

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Par défaut
    bonjour,

    merci pour cette explication

    je compris de votre réponse que la JPA est plus interssante que hibernate.
    Quelle sont le point fort de cette API (JPA)?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Citation Envoyé par sakli Voir le message
    je compris de votre réponse que la JPA est plus interssante que hibernate.
    Quelle sont le point fort de cette API (JPA)?
    Non ce n'est pas vrai.
    L'avantage principal de JPA par rapport à Hibernate est surtout que c'est une api standard JEE.
    Et que pour cette raison il est fort probable que les nouveaux développement soit davantage basé sur JPA quand bien même ils utiliseraient hibernate en tant qu'implem JPA
    Mais en terme de possibilités et de richesses, Hibernate va bien plus loin que la spécification JPA et s'integre parfaitement dans une application JEE, surtout avec l'aide de Spring par exemple.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut
    Citation Envoyé par phantomass Voir le message
    Non ce n'est pas vrai.
    L'avantage principal de JPA par rapport à Hibernate est surtout que c'est une api standard JEE.
    Et que pour cette raison il est fort probable que les nouveaux développement soit davantage basé sur JPA quand bien même ils utiliseraient hibernate en tant qu'implem JPA
    Mais en terme de possibilités et de richesses, Hibernate va bien plus loin que la spécification JPA et s'integre parfaitement dans une application JEE, surtout avec l'aide de Spring par exemple.

    Non ce n'est pas vrai.
    Qu'est ce qui n'est pas vrai ?
    L'avantage principal de JPA par rapport à Hibernate est surtout que c'est une api standard JEE.
    En effet. Et c'est aussi ce que dit(un standard de sun)

    Mais en terme de possibilités et de richesses, Hibernate va bien plus loin que la spécification JPA et s'integre parfaitement dans une application JEE, surtout avec l'aide de Spring par exemple.
    Bon d'accord. La vrai question est veut on faire du Hibernate coute que coûte ou favoriser la modularité?
    Hibernate va bien plus loin que la spécification JPA
    C'est normal jpa n'est pas hibernate.
    En ce qui me concerne l'avantage que j'ai vu c'est que en voulant changer de base avec une application basée sur du jpa, c'est du gâteau alors qu'avec une appli basée uniquement sur du hibernate il faut réecrire du code .
    Mais tu as raison chacun à le choix.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Citation Envoyé par kossistus Voir le message
    Qu'est ce qui n'est pas vrai ?
    Ce qui n'est pas vrai c'est de statuer que "JPA est plus interressant que Hibernate".
    Bon d'accord. La vrai question est veut on faire du Hibernate coute que coûte ou favoriser la modularité?
    En quoi hibernate est moins modulaire que JPA ?
    En ce qui me concerne l'avantage que j'ai vu c'est que en voulant changer de base avec une application basée sur du jpa, c'est du gâteau alors qu'avec une appli basée uniquement sur du hibernate il faut réecrire du code .
    C'est totalement faux. Hibernate est totalement indépendant de la base de données.
    Il suffit de spécifier dans un ficher de conf le Dialect correspondant à la base de données que l'on utilise et l'on switche à sa guise.

  7. #7
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par phantomass Voir le message
    Ce qui n'est pas vrai c'est de statuer que "JPA est plus interressant que Hibernate".
    Ce n'est ni vrai ni faux: chacun son point de vue
    Personellement, je trouve que JPA est beaucoup plus intéressant qu'Hibernate

    Citation Envoyé par phantomass Voir le message
    En quoi hibernate est moins modulaire que JPA ?

    C'est totalement faux. Hibernate est totalement indépendant de la base de données.
    Il suffit de spécifier dans un ficher de conf le Dialect correspondant à la base de données que l'on utilise et l'on switche à sa guise.
    +1
    Bon, rien à voir avec la modularité, mais l'idée est là: que ce soit avec Hibernate ou avec JPA, changer de BD revient (théoriquement) à changre quelques lignes de config).

    Sinon, je crains qu'on t'a mal expliqué le lien entre JPA et Hibernate:
    Hibernate est un ORM à part entière, qui présente à la fois un back-end qui permet d'enregistrer ou de récupérer des objets de la BD (entre autres) et un front-end, via leur API + description du mapping en XML.

    JPA n'est qu'une spécification, une définition d'API (front-end) pour un ORM qui est basé sur les annotations (mais aussi via XML) pour le mapping.

    Hibernate est entre autres une implémentation JPA, donc on peut utiliser Hibernate avec l'API de JPA.

    Voilà.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut lien entre jpa et hibernate
    Ok je n'ai pas bien compris le lien(maintenant c'est plus clair ) avec ton explication.

    Mais quand tu dis
    Hibernate est entre autres une implémentation JPA, donc on peut utiliser Hibernate avec l'API de JPA.
    Je crains que non. La raison est que hibernate est bien antérieur à jpa (il y a bien d'autres raisons ) et que ce dernier qui est fortement inspiré de hibernate.
    Je pense que la vrai phrase est : Hibernate contient (définit)une implémentation jpa, tout comme toplink.

    Quand à la modularité(je veux bien parler de l'architecture en couches)elle était bien là mais avec jpa on a bien une couche supplementaire(Ou alors je me trompe sur toute la ligne).

    Phantomas à dit :
    C'est totalement faux. Hibernate est totalement indépendant de la base de données.
    Il suffit de spécifier dans un ficher de conf le Dialect correspondant à la base de données que l'on utilise et l'on switche à sa guise.
    Bien sur que hibernate est independant de la base de données(Tout le monde le sais )
    Es-tu sur ? Ce n'es pas suffisant fais un test avec mysql et Oracle. Il y a toujours des différences. J'en ai fais la triste esperience. Avec jpa la question ne se pose pas. C'est simplement ce que je voulais dire.
    Voila voila

  9. #9
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par kossistus Voir le message
    Ok je n'ai pas bien compris le lien(maintenant c'est plus clair ) avec ton explication.

    Mais quand tu dis
    Je crains que non. La raison est que hibernate est bien antérieur à jpa (il y a bien d'autres raisons ) et que ce dernier qui est fortement inspiré de hibernate.
    Je pense que la vrai phrase est : Hibernate contient (définit)une implémentation jpa, tout comme toplink.
    Oui, nous sommes en train de dire la même chose ... remarques que j'ai utilisé le mot entre "entre autres" pour marquer qu'Hibernate peut très bien s'utiliser seul

    Citation Envoyé par kossistus Voir le message
    Quand à la modularité(je veux bien parler de l'architecture en couches)elle était bien là mais avec jpa on a bien une couche supplementaire(Ou alors je me trompe sur toute la ligne).
    Quelle couche ?

    Citation Envoyé par kossistus Voir le message
    Es-tu sur ? Ce n'es pas suffisant fais un test avec mysql et Oracle. Il y a toujours des différences. J'en ai fais la triste esperience. Avec jpa la question ne se pose pas. C'est simplement ce que je voulais dire.
    Voila voila
    alléchant en théorie, mais en pratique, JPA n'a pas d'existence en tant que telle ... tu dois utiliser Hibernate ou Toplink (ou autres), et donc, si Hibernate a le genre de problèmes que tu cites, JPA les aurait par effet ricochet, non ?

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Citation Envoyé par kossistus Voir le message
    Es-tu sur ? Ce n'es pas suffisant fais un test avec mysql et Oracle. Il y a toujours des différences. J'en ai fais la triste esperience. Avec jpa la question ne se pose pas. C'est simplement ce que je voulais dire.
    Etonnant vu que MySQL et Oracle sont très bien supporté par hibernate. Sans préjuger de tes capacités peut être que tu t'y es mal pris.
    Sinon comme l'a dit djo.mos ce genre d'incompatibilité partielle avec une base de données peut tout à fait exister avec une implémentation JPA.

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Citation Envoyé par kossistus Voir le message
    Quand à la modularité(je veux bien parler de l'architecture en couches)elle était bien là mais avec jpa on a bien une couche supplementaire(Ou alors je me trompe sur toute la ligne).
    Je pense que tu te trompes.
    Au contraire même, JPA aurait tendance à encourager à enlever une couche d'intégration car la spécification JEE EJB3 encourage l'injection de dépendance par le container EJB. Donc plus besoin d'utiliser Spring, des Pattern Thread Local, ou des technique de démarcation de transaction JTA pour arriver à ses fins.

  12. #12
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par phantomass Voir le message
    Je pense que tu te trompes.
    Au contraire même, JPA aurait tendance à encourager à enlever une couche d'intégration
    Nop, EJB 3, pas JPA, et EJB 3 != JPA (cf ma signature )

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Nop, EJB 3, pas JPA, et EJB 3 != JPA (cf ma signature )
    Je sais bien c'est pour ça que j'ai dit "aura tendance à encourager .. ".
    Je parlais des avantages dans une application JEE.
    Dans une application JEE, EJB 3 contient JPA, par contre une application utilisant JPA n'est pas nécessairement EJB 3.

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut
    Quelle couche ?
    On peut imaginer les couches suivantes dans le contexte orm:
    avec hibernate seul:
    dao<-->contexte de persistence<-->hibernate<-->BD

    ET avec jpa:
    dao<-->contexte de persistence<-->jpa(implementation)<-->hibernate<-->BD

    Pour le reste j'abandonne et vous m'avez convaincu.
    C'est à moi d'évoluer

  15. #15
    Membre confirmé
    Profil pro
    Président
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Président

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Par défaut
    salut,

    la discutions elle est très intéressante.

    je pense que avec la nouvelle couche de JPA complique le développement.

    donc est ce que intéressante?

  16. #16
    Membre confirmé Avatar de Mr-Mobou
    Inscrit en
    Juin 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 58
    Par défaut

    merci pour vos explications

  17. #17
    Membre confirmé
    Profil pro
    Sr. Software Engineer
    Inscrit en
    Août 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Software Engineer

    Informations forums :
    Inscription : Août 2007
    Messages : 169
    Par défaut
    salut,

    moi aussi je ne pense pas vraiment tirer un profit de l'utilisation de JPA en lieu et place d' Hibernate directement.
    Je pense que la préférence de passer par JPA plutot que d'aller directement vers un outil d'ORM est souvent motiver par le désir d'anticiper sur un éventuel futur changement d'outil d'ORM. Ceci rejoint le vieux discours sur la flexibilité des architectures.
    A mon avis Sun à juste voulu avoir son mot à dire dans la challenge entre les fournisseur d'outil d'ORM orienté Java, ce d'autant plus que la grande partie des spec JPA a été pilotée par ces fournisseurs. d'ailleurs, certaines fonctionnalités hibernate ne sont pas dispo avec JPA.
    Moi je suis un fan de la programmation par interface et tous mes POJOs implementent des interface metiers. Donc le jour où je veux passer à Toplink je change ma Factory d'object .

  18. #18
    Membre confirmé Avatar de Mr-Mobou
    Inscrit en
    Juin 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 58
    Par défaut
    je crois que sun essaie de normaliser l'utilisation des ORM.
    je pense que utilisation des annotation en général ne respect pas la séparation entre les configuration et les code alors je préfère "THE OLD FUSION" les fichier de configurations

  19. #19
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Hibernate propose aussi tout un ensemble d'annotation ...
    Par ailleurs hibernate semble continuer dans cette voie puisque hibernate search (recherche full text) se base sur les annotations.

Discussions similaires

  1. [Hibernate JPA] Problème relation entre 2 objets
    Par deli2025 dans le forum Hibernate
    Réponses: 2
    Dernier message: 25/05/2015, 10h35
  2. Différences entre JPA et Hibernate
    Par mosaab dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 26/11/2013, 10h01
  3. Réponses: 0
    Dernier message: 19/07/2013, 19h31
  4. Relations/différence entre EJB3 et Hibernate
    Par amira dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 06/12/2011, 16h30
  5. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 17h07

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