Thanks for the advice... I'll use it :-))

On Nov 3, 10:38 am, Fabio Maulo <[email protected]> wrote:
> IMO create 100000 row-object, in one shot, doesn't make sense with or
> without NH... I never seen such usecase (and I'm 42).... perhaps with some
> specific data-mining but data-mining is not the target of any ORM.
>
> 2009/11/3 mitirino <[email protected]>
>
>
>
>
>
>
>
> > Isn't this
>
> > User user = new User(dataReader.GetString(0), dataReader.GetInt32
> > (1), dataReader.GetString(2));
>
> > the same?... Well anyway... I see that in this simplistic case it is
> > very much not what NH is made for... I am trying to do this only to
> > "defend" NH in front of some people in my team... but I guess I'll
> > have to convince them that the use case is very narrow and that we can
> > just use ADO for this and NH for where it makes sense.
>
> > On Nov 3, 10:27 am, Fabio Maulo <[email protected]> wrote:
> > > select new FlatUser(u.Name, u.Year, p.Name) from User u join
> > u.RealPosition
> > > p
> > > but again... FlatUser is an object and is not the same you are doing in
> > your
> > > pure ADO.NET version.
>
> > > 2009/11/3 mitirino <[email protected]>
>
> > > > you are very fast with the replies... :-)) thanks... I missed the last
> > > > post before sending mine... So exactly... can I somehow produce a list
> > > > of FlatUser object out of the query that come with the scalars?
>
> > > > On Nov 3, 10:22 am, mitirino <[email protected]> wrote:
> > > > > Thank you very much. I know there is a way to create flat "report"
> > > > > type objects if you have an object with an appropriate constructor
> > > > > that takes the same arguments what come from a select.... but I can
> > > > > not find it in the documentation. (If you can help I'll appreciate
> > it)
>
> > > > > I guess what you are saying makes sense for this type of queries...
> > > > > Thanks again.
>
> > > > > On Nov 3, 10:09 am, Fabio Maulo <[email protected]> wrote:
>
> > > > > > the query you are running with data reader is not loading the
> > > > RealPosition
> > > > > > instance.
> > > > > > btw if you think that what you need is load 100000 rows or 200000
> > > > instances
> > > > > > (User+RealPosition) and the DataReader is doing the work you are
> > > > looking for
> > > > > > well... use the DataReader way instead NH.
>
> > > > > > 2009/11/3 mitirino <[email protected]>
>
> > > > > > > Thank you. It does produce one query but runs 10 times slower
> > than
> > > > the
> > > > > > > very simmillar query with DataReader
>
> > > > > > > this is the query with DataReader
>
> > > > > > > command.CommandText = "SELECT u.name, u.year, p.name FROM User u
> > > > JOIN
> > > > > > > Position p ON u.position_id=p.id;";
> > > > > > > using (SQLiteDataReader dataReader = command.ExecuteReader())
> > > > > > > {
> > > > > > >        while (dataReader.Read())
> > > > > > >        {
> > > > > > >                User user = new User(dataReader.GetString(0),
> > > > > > > dataReader.GetInt32
> > > > > > > (1), dataReader.GetString(2));
> > > > > > >                users.Add(user);
> > > > > > >        }
> > > > > > > }
>
> > > > > > > and with NH
>
> > > > > > >                IList<User> users =
> > > > > > >                        session.CreateQuery("select u from User u
> > join
> > > > > > > fetch u.RealPosition").List<User>();
>
> > > > > > >                return users;
>
> > > > > > > On 100000 rows in User it runs within less than 1 sec with the
> > > > > > > DataReader.
>
> > > > > > > With the HQL you suggested NH is producing almost exact same SQL
> > as
> > > > > > > the manual query above but runs in 12-13 sec.
>
> > > > > > > I realize it is not exactly equal test as the one with DataReader
> > > > > > > doesn't care for the Position objects but is there something I
> > can do
> > > > > > > to get a comparable performance form NH?
>
> > > > > > > On Nov 2, 6:21 pm, Fabio Maulo <[email protected]> wrote:
> > > > > > > > select u from User u join fetch u.RealPosition
>
> > > > > > > > 2009/11/2 mitirino <[email protected]>
>
> > > > > > > > > Hi,
>
> > > > > > > > > I have many-to-one for User and Position and when I want to
> > load
> > > > the
> > > > > > > > > users it makes one select to get all the users and then one
> > > > select per
> > > > > > > > > user to get the position for each one.
>
> > > > > > > > > Is there any way to avoid this and actually load everything
> > with
> > > > one
> > > > > > > > > select?
>
> > > > > > > > > Thank you
>
> > > > > > > > > ----
>
> > > > > > > > > IList<User> items = session.CreateQuery("from
> > > > User").List<User>();
>
> > > > > > > > > ---
>
> > > > > > > > >  <class name="User" table="User" >
> > > > > > > > >    <id name="Id" column="id">
> > > > > > > > >      <generator class="native" />
> > > > > > > > >    </id>
> > > > > > > > >    <property name="Name" column="name" />
> > > > > > > > >    <property name="Year" column="year" />
> > > > > > > > >    <many-to-one name="RealPosition"
> > > > > > > > >                 class="Position"
> > > > > > > > >                 column="position_id" />
> > > > > > > > >  </class>
>
> > > > > > > > > ----
>
> > > > > > > > >  <class name="Position" table="Position" >
> > > > > > > > >    <id name="Id" column="id">
> > > > > > > > >      <generator class="native" />
> > > > > > > > >    </id>
> > > > > > > > >    <property name="Name" column="name" />
> > > > > > > > >  </class>
>
> > > > > > > > --
> > > > > > > > Fabio Maulo- Hide quoted text -
>
> > > > > > > > - Show quoted text -
>
> > > > > > --
> > > > > > Fabio Maulo- Hide quoted text -
>
> > > > > > - Show quoted text -- Hide quoted text -
>
> > > > > - Show quoted text -
>
> > > --
> > > Fabio Maulo- Hide quoted text -
>
> > > - Show quoted text -
>
> --
> Fabio Maulo- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
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