Hello everybody.
I confused again. I have Vaadin 7 web app. I read all topics and chapters about Hibernate + Vaadin and i dont have my answer so far. My problem is especially about LAZY fetching and session handling. There is this situation. Lets say we have editable table. Every row have its own “update” button. Content of table are rows form DB, loaded thought hibernate entity class by new opened session. So i create view and load rows. Cause i have some ManyToMany etc. relations i do not close session so all entitites are persistent. In hibernate i have sessioncontext setted to thread variant.
There are some facts i discovered:
- Navigation through navagator is NOT handled by specific thread per user
- Button clicks in loaded view are NOT handled by specific thread per user too
As you can expected all described above cause trouble. By hibernate logic i should use getCurrentSession for persitent object but im not in same thread so it does not work. Or i can open new session but i cant update persistent object in another session, it causes exception. So let say that i close session after gettting all rows for table. But it causes exception of LAZY loaded atributes cause entity is detached now.
I have many questions.
Is my architecture of web app wrong when i want to handle updates under button?
Should i avoid to using LAZY fetching?
Should i create my own implementation of sessionContext with “hibernate session per vaadin session” logic? (I know that there are many problem about closing sessions but i think that is the best solution how avoid many opened hibernate sessions)
I hope i explained my confusion well so we can find proper solution because session per request can not work for Vaadin web apps i hope.
Thx