Bonjour à tous,
après vous avoir un peu laissé tranquille, je reviens avec une question qui est en train de me plomber ma semaine : vaut-il mieux utiliser getSession() ou getHibernateTemplate() (dans des DAOs héritant de HibernateDAOSupport) ? Et cela a-t-il une influence sur l'utilisation du lazy-loading ?
Je m'explique : je travaille sur un projet de Web Services utilisant Hibernate pour le mapping à la base. J'ai pu activer le lazy-loading sur certaines collections, mais d'autres résistent encore et toujours à l'envahisseur (Erreur LazyInitializationException : connection closed ou autre).
Après m'être documenté sur Internet, et relu un peu tout le code du projet, je me suis rendu compte que nous utilisions beaucoup de getHibernateTemplate(). En en remplaçant un par getSession() j'ai réussi à utiliser le lazy-loading sur une nouvelle collection. J'ai donc voulu tous les remplacer, mais j'ai de nouvelles erreurs qui arrivent en pagaille ("illegal attemp to collection" ou "trying to attach a collection to two different sessions")...
Dans cette dernière erreur, je dois avouer que le "2 sessions différentes" me fait assez peur, étant donné que je pensais travailler dans une seule et unique session ouverte grâce à classe OpenSessionInViewFilter dans le fichier web.xml.
Si quelqu'un voulait bien m'expliciter un peu plus le rôle de chaque fonction, et laquelle utiliser pour utiliser le lazy-loading, je lui en serait mille fois redevable.
Merci d'avance,
MiniMarch
Partager