These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 
Author Message
 Post subject: Forcer le lazy loading
PostPosted: Wed Mar 14, 2007 3:42 pm 
Newbie

Joined: Wed Mar 14, 2007 3:30 pm
Posts: 3
Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp

Hibernate version: 3.2.2


Name and version of the database you are using: SQL Server 2005


Bonjour,

Bien qu'ayant préciser dans mes fichiers de mapping "default-lazy=true" sur l'élément hibernate-mapping, lazy="true" sur les élément class et property. Il m'apparait impossible d'avoir un chargement différé des propriétés des beans hibernate.

1) query.list() renvoie des beans dèjà initialisés (d'aprés l'inspecteur du debugger d'eclipse)

2)idem pour session.get()

3)session.load() me renvoie un proxy effectivement non intialisé, malheureusement, à la premiére propriété accédée, toutes les autres s'initialisent!

Est ce le comportement "normal" ?
Si oui, y a t il un moyen quelquonque de ne charger que les propriétés accédées ?
si non serait il possible que la configuration d'un autre élément puisse influer (Session, SessionFactory....) ? y aurait il un moyen quelquonque de "forcer" le lazy loading ?

Merci d'avance d'éclairer un peu ma lanterne !


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 14, 2007 4:01 pm 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
Pourquoi as tu besoin d'avoir un lazy loading aussi lazy ?
Quand tu fais un get ou un list, à priori c'est que tu veux utiliser les objets : quel est donc l'intérêt de ne pas les initialiser ?

Il est possible depuis hibernate 3 d'avoir du lazy property fetching (http://www.hibernate.org/hib_docs/v3/re ... properties) mais comme dit dans la doc c'est plus marketing qu'autre chose.

Il est en général plus important de juste lire le nombre de row que l'on veut que de ne lire que certaines propriétés d'un objet.

_________________
Seb
(Please don't forget to give credits if you found this answer useful :)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 14, 2007 4:23 pm 
Newbie

Joined: Wed Mar 14, 2007 3:30 pm
Posts: 3
Merci beaucoup pour ta réactivité ! Je n'avais pas vu cette partie de la doc, je teste ça dés demain.

Oui, j'ai oublié de préciser mon objectif, en fait il s'agit de charger un ou plusieurs bean contenant :
- de propriétés décrivant un document (nom, nom de l'auteur, type...)
- une propriétés de type byte[] contenant le document lui même, qui peut être un fichier trés volumineux (plusieurs mo voir dizaine de mo)

Mon objectif est d'accéder aux champs descripteurs de ce document sans entrainer le chargement du contenu du document lui même dans le bean (dans ce cas -> outOfmemory assuré dans le cas d'un paquet de gros docs).


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 14, 2007 4:27 pm 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
C'est précisément pour ce genre de cas que le lazy property fetching est pensé.
Maintenant il est également possible de diviser en deux objets DocumentInfo et Document avec un lien de DocumentInfo vers Document.
Dans ce cas on revient dans du lazy loading classique et ça pose moins de problème

_________________
Seb
(Please don't forget to give credits if you found this answer useful :)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 14, 2007 5:05 pm 
Newbie

Joined: Wed Mar 14, 2007 3:30 pm
Posts: 3
Merci du conseil, trés bonne idée effectivement !


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.