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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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.
>>
>>
>>