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] Chargement d'un objet avec XX sous niveau ?


Sujet :

Hibernate Java

  1. #1
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut [Hibernate] Chargement d'un objet avec XX sous niveau ?
    Imaginons que j'ai un objet A qui contient une liste d'obje B.

    Je désire faire une recherche des objet A sur des critères propre a l'objet A, et n'afficher la liste des objet A qui correspondent à cette recherche.

    Ensuite, lors que je séléctionnerai un object A, j'afficherai tout les informations, y compris celle des objets B lié à celui ci.

    Est-ce qu'il est possible de paramètrer un "Criteria" afin de dire à Hibernate "Ne charge pas les sous objet" ?

    Voir, de manière generique, si l'objet B possèdait des objets C, est-ce qu'il existe un moyen de charge XX niveau d'objet ?

  2. #2
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    C'est le principe du lazyLoading. Cela dépendra donc de ta définition de chargement dans le fichier de mapping entre les relations inter-objets. Par défaut le lazy Loading est actif pour les associations et inactif pour les propriétés.

    D'autres stratégies de chargements existent comme le fetch="join|select" qui défini comment charger ta relation (par jointure de tables ou par deux select consécutifs), batch (ou prefetch pour certains) qui permet de charger la liste d'objets par lots définis dans le fichier de mapping. Tout est donc paramétrable. Maintenant, si tu veux "exceptionnellement" charger tout un graphe alors qu'il est défini dans ton mapping comme chargé tardivement, il faudrait que je jette un coup d'oeil plus abouti dans la doc (enfin tu peux aussi hein, ca doit surement y être écrit, suffit de s'encourager à plonger le nez dedans )

    Ma réponse te va ou bien est-ce plutot la seconde solution pour laquelle tu voudrais opter ?!?

  3. #3
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Effectivement, je peux me diriger vers cette solution mais, je suis dans un contexte Spring Web.

    Hors, le but en fait est celui-ci :

    Des utilisateurs envoie des fichiers de Log, qui sont traités et il en résult une classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Log {
     
    private String _user;
    private int _nbFatal;
    private int _nbError;
    ...
    private int _nbDebug;
     
    private Set<LogRecord> _records;
     
    }
    Et la classe LogRecord :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Class LogRecord {
     
    private int _lineNumber;
    private String _className;
    private String _level;
    private String _message;
     
    }

    Mon but est de fournir une page qui permettrait par exemple de voir tout les log pour un utilisateur "User1" et de les lister afin de pouvoir en choisir un.

    Dès qu'on en a choisi un, l'object Log est donc rechargé et mis en session et afficher partiellement ( il risque d'y avoir des milliers de ligne ).

    Dans cette page qui affiche, on a la possibilite de choisir le(s) niveau que l'on désire affiché, et avancer / reculer dans les "lignes".

    Et les traitements pour savoir ce qu'il faut afficher sont fait sur l'objet Log en mémoire.

    Hors, lors d'un 2ème appel, ne risquerai-je pas d'avoir une exception du fait que la session est fermée?

Discussions similaires

  1. Creation objet avec des sous objets
    Par eleon_7 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 22/11/2012, 15h03
  2. Menu Horizontale avec 2 sous niveau
    Par Rhend dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 08/02/2012, 10h47
  3. Réponses: 5
    Dernier message: 22/04/2008, 10h41
  4. Chargement d'objets avec héritage
    Par djedje38 dans le forum Hibernate
    Réponses: 1
    Dernier message: 26/03/2008, 11h50
  5. [HIBERNATE] Chargement d'objet incorrect
    Par faya972 dans le forum Hibernate
    Réponses: 4
    Dernier message: 19/04/2006, 23h01

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