Je suis assez nouveau au printemps, et j'aimerais comprendre un peu plus sur les sessions. J'ai mappé une base de données héritée avec des entités annotées Hibernate et construit deux objets de service à récupérer, récupérer etc. Mes entités contiennent également d'autres entités (mappées via des clés étrangères) et des ensembles d'entités. Quand je traverse le graphe d'entitiy dans mes services, je n'ai aucun problème. Mes services ont été enveloppés dans un TransactionProxyFactoryBean, donc tout devrait être bon. Donc, dans mon View Controller, je demande un tas d'entités à partir des services. Mais quand je parcours le graphe d'entité dans mon contrôleur de vue (par exemple pour afficher le nom du pays de l'utilisateur, l'état et le pays étant des entités paresseusement chargées), la session Hibernate est déjà fermée et je reçois une "LazyInitializationException: ne peut pas initialiser proxy - Je ne voudrais pas que mes services récupèrent les données avec impatience, cela consomme beaucoup de RAM car mes graphiques sont profonds et peuvent même avoir des références circulaires. Je ne veux pas non plus avoir à toucher explicitement aux parties que je vais afficher dans les services, car cela signifierait que je devrais copier/coller des services similaires à plusieurs reprises. Donc ce que je veux, c'est que la session Hibernate soit toujours ouverte quand je suis dans mon contrôleur de vue et ne ferme pas la session tant que la vue n'a pas été servie. Que puis-je faire pour le garder ouvert?Sessions de base de données au printemps
Mon vue bean ressemble à ceci, est-il possible d'y injecter mon bean dérivé de TransactionProxyFactoryBean?
<bean name="/" class="example.SimpleViewController">
<property name="userService" ref="userService"/>
<property name="catalogService" ref="catalogService"/>
</bean>
Vive
Nik
Problème courant. Ouvrir la session dans un filtre est la voie à suivre. –