Bonjour,
Je fais un site sur lequel un utilisateur, appartenant à un groupe, peut se connecter pour voir des informations propres à son groupe.
Donc j'ai une table user, une table group, et une table infos.
J'ai posé des relations many-to-one et one-to-many pour lier infos et group, et user et group.
Quand l'user se loggue sur le site, je charge depuis la base l'objet user, puis dans l'user, l'objet group (many-to-one fetch="join" lazy="false") et dans group, la liste des objets infos (one-to-many) est loadé en mode lazy, cad que je ne remplirais la liste qu'en accédant à getList().
J'ai toutefois plusieurs questions :
Actuellement, la fonction signIn(login, pass) qui renvoie un user ouvre une nouvelle session, une nouvelle transaction, récupere le user et fait les vérifications d'usage. Ensuite on commit et on renvoie l'user.
Je ne close pas la session dans cette fonction, sinon je ne pourrais pas avoir mes listes d'infos (lazy).
Plus tard, j'appelle la fonction getList() qui ouvre une nouvelle session, une nouvelle transaction, appelle user.getGroup().getList(), commit, et renvoie la liste.
* Pour ces deux fonctions je fait openSession. Est ce qu'il serait possible d'ouvrir une fois une session, et apres de faire getCurrentSession(), sachant que plusieurs user peuvent se connecter au site en même temps ? Et si oui, comment faire pour le currentSession pointe bien sur la bonne session ?
* A quel moment je close ma session ?
* Quand un utilisateur se déconnecte, j'ai envie de vider tant la mémoire que le cache de tous ces objets loadés. Comment je peux faire ça ? Faire un close de la currentSession et vider l'objet qui est maintenant détaché ? Autre chose ?
* Aucune de ces informations ne peuvent être modifiées. J'ai ajouté une clause mutable à chaque mappage de classe, et j'ai essayé d'ajouter le cache read-only, mais avec les histoires de deprecated et les 1000 .jar a rajouter dans tous les sens, j'ai senti qu'il y avait une feinte.
J'espère que j'ai été assez clair, et que je passe pas trop pour un manchot.
Merci d'avance.
Partager