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

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