ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Larry Meadors <larry.mead...@gmail.com>
Subject Re: Object Oriented Loading Best Practice
Date Mon, 02 May 2005 21:41:29 GMT
I mean this is the nicest possible way: This is a silly question, and the 
answer is "it depends".

If you have 1000 customers (A) and each of them have 1000 orders (B) and 
each order has 25 line items (C), do you really need to load up 25,000,000 
objects?

If so, buy a buttload of RAM, load them all in one uber-query, and be done 
with it.

If not, use lazy loading.

Larry


On 5/2/05, Nic Werner <werner@sonoma.edu> wrote:
> 
> The question is more whether I should let the chain of objects populate
> itself, or knowing A contains B contains C, populate them all in one
> call. The former is more object oriented, while the latter is more
> efficient.
> 
> I need to load all the child objects, but instead of having one Select
> block w/a ResultMap that calls the other Objects, I now have to write
> another query and create a new ResultMap for all three objects. Or maybe
> I can include other ResultMaps?
> 
> The downside I see to that is that if I change an attribute in object B
> or C, I have another query to update and ResultMap, whereas if I made
> the individual call I would only need to update the Bean and its related
> query.
> 
> The upside is of course, only one SQL call.
> 
> - Nic.
> 
> Brandon Goodin wrote:
> 
> >If you have no need to load the child objects then don't use a complex
> >result in your resultMap.
> >
> >Brandon
> >
> >On 5/2/05, Nic Werner <werner@sonoma.edu> wrote:
> >
> >
> >>Hi,
> >> I have several objects in my program which have a bit of a
> >>hierarchy, ie A contains B, B contains C and so on. Each table in the DB
> >>is linked to each other by a foreign key on a unique ID. I have iBATIS
> >>populating each Bean by using a resultMap and calling on the object's
> >>Select statement to populate the encapsulated Bean. Meaning, if I try
> >>and load info for B, it makes a call to the DB for B, and also for C.
> >>
> >>My question is: Is this the best way to go about things? If I am loading
> >>A, it is going to create a call for A,B and C, where normally (w/o
> >>IBATIS) I would just create a statement that contained a join of all
> >>three tables on their unique IDs - and only one DB call.
> >>
> >>Let me know if I need to explain more.
> >>
> >>Thanks,
> >>
> >>- Nic.
> >>
> >>
> >>
> 
>

Mime
View raw message