Désactiver le chargement paresseux dans Hibernate
Comment puis-je désactiver le chargement différé en veille prolongée? Je suis à l'aide de la persistance des annotations, pas une hbm xml fichier.
Je suis aller chercher un objet unique par ID et veulent toutes les propriétés chargé. La session est fermée avant que je utiliser l'objet.
Merci!
source d'informationauteur Jonah
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'annoter les propriétés que vous souhaitez non-lazy chargé avec FetchType.DÉSIREUX
Vous voyez, ce n'est pas l'objet que vous êtes de chargement qui n'est pas chargé. Plutôt que de l'objet des associations sont paresseux, et vous devez leur dire de ne pas être si c'est votre comportement souhaité.
Si ces objets ont également des associations que vous souhaitez charger avec impatience, vous avez besoin de les annoter.
Vous pouvez spécifier
fetch = FetchType.EAGER
sur l'ensemble de vos associations, de manière récursive, mais ce serait de charger tout un tas de données que vous n'êtes probablement pas intéressé.Il est généralement une meilleure solution, au moins, laisser tous les OneToMany et ManyToMany associations de PARESSEUX (qui est la valeur par défaut), et les initialiser avant de fermer la session si votre cas d'utilisation a besoin d'eux (ou même de les charger avec une requête ad-hoc).
OneToOne et ManyToOne associations sont DÉSIREUX par défaut, ce qui génère souvent de trop nombreuses demandes. D'habitude, je préfère marquer tout paresseux, à moins que tous les cas d'utilisation nécessaire pour aller chercher de l'association.
Utiliser fetch = FetchType.AVIDE de toute la collection et de l'entité que vous souhaitez paresseux pour être éteint.
Également Vérifier cela:
http://techblog.bozho.net/?p=645