Tuna, 8" or 2" for a Get(id) is simple unacceptable...Sravan is doing something wrong some where... for 2" there is a possibility... he has a big obj-graph and he turn-off the lazy loading.
2009/9/18 Tuna Toksoz <[email protected]> > Slow performances for the first time is ok, there is a lot going on and nh > is lazy in doing things, until you do something it won't create cache, to > name a few. > > Tuna Toksöz > Eternal sunshine of the open source mind. > > http://devlicio.us/blogs/tuna_toksoz > http://tunatoksoz.com > http://twitter.com/tehlike > > > > > On Fri, Sep 18, 2009 at 7:23 AM, Oskar Berggren > <[email protected]>wrote: > >> >> As Tuna says, be sure to not open two sessions if you in the future >> create a use case where two or more objects are retrieved and edited >> together. >> >> Nonetheless, ten seconds for getting one object, and even two seconds >> on subsequent calls is ridiculous. >> >> The times you mention, are they executing time for your Get(), or for >> only the call to session.Get()? >> >> Does the first call include the time to configure and build the >> session factory? If it does, this could explain the whole or part of >> the 8 second difference, unless your domain model is very small. >> >> If your sql server is slow to respond on connection requests (slow >> server, network problem, etc.) some time difference could be explained >> by this, since on the second request the connection is already >> available thanks to connection pooling (unless you've turned that >> off). >> >> Now, two seconds for a subsequent call also seems overly much. Does >> you object have a bunch of eagerly initialized collections or other >> relations? How many sql queries are executed? Is connection pooling >> working? If you do the same SQL query manually, how long does it take? >> Is the database indexed properly? Does the database engine use the >> index? >> >> Committing the transaction when you have only fetched data seems >> unnecessary and unclean. >> >> /Oskar >> >> >> >> 2009/9/18 Tuna Toksoz <[email protected]>: >> > What if you get two objects and save 2 times? >> > >> > Tuna Toksöz >> > Eternal sunshine of the open source mind. >> > >> > http://devlicio.us/blogs/tuna_toksoz >> > http://tunatoksoz.com >> > http://twitter.com/tehlike >> > >> > >> > >> > >> > On Fri, Sep 18, 2009 at 1:39 AM, Sravan Kumar >> > <[email protected]> wrote: >> >> >> >> I am following unit of work pattern. UI tier calls Business tier to get >> an >> >> entiy with ID. >> >> >> >> Gettting an objec with ID is Unit Of work in this example. I Get an >> entity >> >> bind it to UI and then do some modifications and then calls >> >> >> >> Save. Save is a another unit of work. >> >> >> >> Thank you very much . >> >> Sravan >> >> >> >> On Thu, Sep 17, 2009 at 6:33 PM, Tuna Toksoz <[email protected]> >> wrote: >> >>> >> >>> Opening a session in every operation is bad. You loose unit of work + >> >>> first level cache etc. >> >>> Don't do it. >> >>> >> >>> >> >>> Tuna Toksöz >> >>> Eternal sunshine of the open source mind. >> >>> >> >>> http://devlicio.us/blogs/tuna_toksoz >> >>> http://tunatoksoz.com >> >>> http://twitter.com/tehlike >> >>> >> >>> >> >>> >> >>> >> >>> On Thu, Sep 17, 2009 at 9:31 PM, sravan < >> [email protected]> >> >>> wrote: >> >>>> >> >>>> I have a Get Method that takes the ID of the entity and gives the >> >>>> object with that ID. >> >>>> >> >>>> In the Get Method I open a new session and calls Get on the session. >> >>>> >> >>>> the first call to get takes 10 sec, but subsequent calls to get takes >> >>>> just 2 seconds. >> >>>> >> >>>> I do not have second level caching enabled. >> >>>> >> >>>> I ran the sql server profiler and it is taking the same time to >> >>>> execute the query in both the cases. >> >>>> >> >>>> Not able to figure out why it is taking so long time for first call >> to >> >>>> get. >> >>>> >> >>>> Any help is Greatly appreciated. >> >>>> >> >>>> The second call is invoked on a different session. >> >>>> >> >>>> public virtual T Get( long ID ) >> >>>> { >> >>>> >> >>>> if ( null == Interceptor ) throw new TechnicalException >> >>>> ( "RepositoryBase::Get: ERROR: Interceptor must be set prior to use >> of >> >>>> this class." ); >> >>>> >> >>>> T entity = null; >> >>>> using ( ISession session = >> >>>> NHibernateSessionFactorySingleton.GetSession( Interceptor ) ) >> >>>> { >> >>>> using ( ITransaction transaction = >> >>>> session.BeginTransaction( ) ) >> >>>> { >> >>>> >> >>>> session.FlushMode = >> >>>> FlushMode.Never; >> >>>> >> >>>> T entity = session.Get<T>( ID >> ); >> >>>> >> >>>> transaction.Commit( ); >> >>>> } >> >>>> >> >>>> } >> >>>> >> >>>> >> >>>> return entity; >> >>>> } >> >>>> >> >>>> >> >>>> Sravan >> >>>> >> >>> >> >>> >> > >> > >> > > >> > >> >> >> > > > > -- Fabio Maulo --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
