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
-~----------~----~----~----~------~----~------~--~---

Reply via email to