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 :

Configurer le lazy à false par défaut


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 93
    Points
    93
    Par défaut Configurer le lazy à false par défaut
    Est-ce possible de configurer hibernate pour désactiver le lazy par défaut ?
    (je ne trouve pas de propriété correspondante).

    Cordialement

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par Tristan Zwingelstein Voir le message
    Est-ce possible de configurer hibernate pour désactiver le lazy par défaut ?
    (je ne trouve pas de propriété correspondante).

    Cordialement
    C'est le EAGER qu'on a par défaut normalement , sauf erreur de ma part.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    C'est le EAGER qu'on a par défaut normalement , sauf erreur de ma part.
    Dans mon projet j'ai constarté que c'est le lazy à tru epar défaut. J'aimerais donc savoir où est-ce que je peux trouver cette conf globale (si elle existe) ?

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    De mémoire le lazy loading est par défaut depuis Hibernate 3.
    C'est à mon avis une bien mauvaise idée de le désactiver.
    Tu risques de charger beaucoup de données et les performances de ton application s'en ressentiront.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par fr1man Voir le message
    De mémoire le lazy loading est par défaut depuis Hibernate 3.
    C'est à mon avis une bien mauvaise idée de le désactiver.
    Tu risques de charger beaucoup de données et les performances de ton application s'en ressentiront.
    Mais je ne peux pas faire de jointures si il est activé n'est-ce pas ? (une relation many to many par exemple).

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Si tu peux, mais il faut le faire au sein d'une session Hibernate.
    Soit tu libères ta session Hibernate après le rendu de la vue, voir le pattern openSessionInViewFilter, soit tu effectues tes chargements avant le rendu de la vue quand tu es en présence d'une session Hibernate active.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Si tu peux, mais il faut le faire au sein d'une session Hibernate.
    Soit tu libères ta session Hibernate après le rendu de la vue, voir le pattern openSessionInViewFilter, soit tu effectues tes chargements avant le rendu de la vue quand tu es en présence d'une session Hibernate active.
    Ce que je fais actuellement c'est que pour toutes les relations je précise le lazy à false dans mon mapping hibernate.
    J'aurais aimé avoir une conf globale pour éviter de le mettre pour toutes les relations.

  8. #8
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Si tu peux, mais il faut le faire au sein d'une session Hibernate.
    Soit tu libères ta session Hibernate après le rendu de la vue, voir le pattern openSessionInViewFilter, soit tu effectues tes chargements avant le rendu de la vue quand tu es en présence d'une session Hibernate active.
    +1.

    De plus, si tu utilise des requetes HQL, il est possible, quand tu fais une jointure, d'ajouter le mot-clé "fetch" pour charger les données issues de la jointure (dans le cas où la propriété est à LAZY).

    NB : ne jamais mettre EAGER sur toutes les jointures. C'est mal !

  9. #9
    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 : 40
    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
    Citation Envoyé par Tristan Zwingelstein Voir le message
    Ce que je fais actuellement c'est que pour toutes les relations je précise le lazy à false dans mon mapping hibernate.
    J'aurais aimé avoir une conf globale pour éviter de le mettre pour toutes les relations.
    très très très très mauvaise pratique!
    Je ne sais pas l'idée qui est derrière mais sache que si ta préoccupation c'est de pouvoir charger les enfants, même si tu es en LAZY=TRUE, tu as toujours accès à l'ID de l'enfant. Donc si tu veux charger l'objet, tu n'as qu'à exécuter ta méthode findById sur le DAO de l'enfant par exemple.
    Le risque que tu as à faire LAZY=FALSE partout, c'est de charger toutes tes données de ta DB en mémoire et de l'exploser.

Discussions similaires

  1. [WS 2008] RDP : configurer un "Save AS" par défaut ?
    Par neo.51 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 02/09/2009, 12h16
  2. configuration de la passerelle par défaut
    Par gorgonite dans le forum RedHat / CentOS / Fedora
    Réponses: 5
    Dernier message: 15/06/2008, 12h20
  3. Réponses: 3
    Dernier message: 13/06/2006, 09h20
  4. Configuration d'une EditBox par défaut
    Par Mac Twist dans le forum MFC
    Réponses: 15
    Dernier message: 04/05/2006, 19h33
  5. [Apache 2] Configurer le répertoire par défaut
    Par sylsau dans le forum Apache
    Réponses: 5
    Dernier message: 22/02/2006, 15h46

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