Turn on logging and take a look at what's happening? Symon.
Symon Rottem http://blog.symbiotic-development.com On Fri, Sep 18, 2009 at 3:06 PM, Fabio Maulo <[email protected]> wrote: > 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 -~----------~----~----~----~------~----~------~--~---
