But that is another matter.IMO our friend has lazy="false" and he is loading
a lot of entities.
Country
|_ States
|_ Cities
|_ Addresses
session.Get(isCountry) , with lazy load false, is slow even for Cittá del
Vaticano... you can imagine for China.
2009/9/18 Tuna Toksoz <[email protected]>
> Another thing Fabio pointed out is
> why are you opening and closing a transaction if you have
> session.FlushMode=Never? you don't set flushmode in a repository method like
> Get, and you don't open a transaction there!
>
> 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 9:06 AM, 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
>>
>>
>>
>
> >
>
--
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
-~----------~----~----~----~------~----~------~--~---