Load() -- open connection -- execute sql -- close connection Save() -- open connection -- execute sql -- close connection
On Fri, Nov 7, 2008 at 4:03 PM, FrederikGheysels < [EMAIL PROTECTED]> wrote: > > How will it do that then, if I may ask ? > I mean, suppose I open a session, load an object from the DB and do > not disconnect the session. > Then, the object is loaded, the user leaves for lunch for instance, > He comes back, does some other changes, and wants to persist his work. > When will NHibernate disconnect the session ? > > Does the 'connection.release-mode' configuration value also affects > this behaviour ? > > On Nov 7, 2:23 pm, "Ayende Rahien" <[EMAIL PROTECTED]> wrote: > > Don't disconnect the session NH will take care of closing/opening the > > connection to optimize it to minimal usage time. > > > > On Fri, Nov 7, 2008 at 3:18 PM, FrederikGheysels < > > > > [EMAIL PROTECTED]> wrote: > > > > > I am using NHibernate in a WinForms application. > > > In this application, I make use of 'long sessions'; consider that I > > > have an ISession that is kept around as long as my Form is open. > > > > > That is: > > > I load an object using this Session when the form is opened. > > > When the form is being closed, I check if I have to save the object, > > > and if so, I save it using the same session. > > > > > During 'user think time', I disconnect the Session, so that the DB > > > connection is not kept open for a long period of time. > > > > > The issue that I now have, is that my object contains a collection > > > which is lazy loaded. > > > Since I disconnect my session once the object has been loaded, I get > > > an exception offcourse when I want to access the collection of that > > > object. (I do not always need this collection). > > > > > Therefore, when I need to access the collection, I explicitly > > > reconnect the Session, and disconnect it afterwards. Offcourse, this > > > is not very 'transparant' IMHO. > > > It would be nice if there would be some way to reconnect the session > > > implicitly; the client should not even know that the collection that I > > > want to retrieve, is a lazyloaded collection. > > > > > I've tried creating an Intercepter, in where I've overriden the > > > SetSession, Load and Instantiate methods. In this way, I thought that > > > I could reconnect the session each time the Load or Instantiate > > > methods were invoked, and when I saw that the session was > > > disconnected, I could reconnect the session. > > > But, this doesn't work. > > > > > Another option, would be that I keep my Session connected during 'user > > > think time', but IMHO , this is not a viable option; one never knows > > > how long the Form (and therefore the session) will be kept open, and > > > connected to the DB. > > > > > Is there any other way on how I could make this a bit more > > > transparant ? > > > Maybe it is an idea to add a method to the Interceptor which is > > > invoked each time something is being lazy loaded (just before it is > > > lazy loaded) ? > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
