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

Hibernate Java Discussion :

[Hibernate] Petites questions (proxy?, load vs get)


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet, concepteur
    Inscrit en
    Mai 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet, concepteur

    Informations forums :
    Inscription : Mai 2003
    Messages : 50
    Par défaut [Hibernate] Petites questions (proxy?, load vs get)
    Bonjour,

    Je suis entrais de me mettre à Hibernate, et dans la documentation on perle souvent de proxy. J'ai du mal a voir à quoi cela correspond exactement.

    Est ce quelqu'un pourrait m'expilquer a quoi correspond ce terme?

    De plus, l'interface Session possède les méthodes load et get, et à part le fait que ce dernier retourne null au lieu de lever une exception quand un id est introuvable, je ne voie pas ce qu'elles sont les différences.
    La aussi si qq'un peux m'aider.

    Merci.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    Pour le proxy, si je ne confond pas avec le lazy (les deux notions sont assez proches mais différentes lol)

    Prenons a l'objet de la classe A :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class A {
      int id;
      B b;
    }
    Si tu as mis proxy sur la propriété b, lorsque tu va faire un load de a, la requete en base ne va récupérer que a en base, et pas b, par contre si tu fait :
    Hibernate executera une seconde requete pour récupérer b.

    Si je me souviens bien le lazy (ou le proxy si j'ai inversé ) effectue à peu pré la même chose mais au niveau de la classe :

    Si tu récupère une instance de A, hibernate te renvera a avec toutes ses propriétés simples (propriétés ne nécessitant pas une jointure en gros) et effectura des requete supplémentaire à chaque fois que tu voudras lire une propriété nécessitant une jointure.

    J'espère avoir été à peu prés clair... J'ai un peu oublié ce que je sais, c'est qu'il faut y faire attention car ça peu changer les perfs de ton appli du tout au tout.

  3. #3
    Membre chevronné
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Par défaut
    Proxy est un design patterns bien contenu décrit dans le livre du GoF. Voila un site qui explique rapidement l'idée et donne un exemple en C# : http://www.dofactory.com/Patterns/PatternProxy.aspx

    Le lazyloading signifie chargement paresseux, l'idée que l'on retrouve derrière ce terme est la suivante :
    On ne charge un objet que quand on y accede pour la premiere fois.

    Dans le cadre du lazyloading, le pattern proxy est parfait, il gère l'accès à un objet, le charge lors du premier accès et délègue tous les appels vers l'objet réel qui a été chargé.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    et la definition du proxy en Java

    Le lazy loading permet d'optimiser les performances de ton application développée avec Hibernate, en effet cela te permet de ne pas loader un énorme graphe d'objets quand tu n'en a pas besoin, le chargement d'un graphe plus profond se fait à la demande (en accédant au proxy: cf post dlemoing ci dessus)

    ++

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 36
    Par défaut Re: [Hibernate] Petites questions (proxy?, load vs get)
    Bonjour,

    Citation Envoyé par seawolfm
    De plus, l'interface Session possède les méthodes load et get, et à part le fait que ce dernier retourne null au lieu de lever une exception quand un id est introuvable, je ne voie pas ce qu'elles sont les différences.
    J'ai l'impression que la méthode load() n'initialise que l'identifiant de ton objet alors que get() initialise tous les membres.

    Cordialement.

Discussions similaires

  1. Petite question sur le LAZY LOADING
    Par saveriu dans le forum JPA
    Réponses: 11
    Dernier message: 16/03/2010, 11h41
  2. Petite question sur hibernate tools
    Par bouvetj dans le forum Hibernate
    Réponses: 1
    Dernier message: 12/02/2010, 11h58
  3. [Data] encore une question lazy loading spring hibernate
    Par Fred_Bogota dans le forum Spring
    Réponses: 3
    Dernier message: 24/10/2009, 15h31
  4. Petite Question sur le lazy loading
    Par Arthis dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/11/2008, 11h24
  5. petite question sur les proxy maven
    Par afkkir dans le forum Maven
    Réponses: 2
    Dernier message: 26/05/2008, 19h04

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