ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kuntz, Tim" <tim_ku...@pamperedchef.com>
Subject iBatis Book - Lazy Loading Description
Date Fri, 05 Jan 2007 02:24:26 GMT
The new iBatis book describes lazy-loading as follows (pg 131).

"To use lazy loading, we need to edit the SqlMapConfig.xml file to
enable it by changing the lazyLoadingEnabled attribute to true in the
<setting> element. If you want to use the cglib enhanced version of lazy
loading, you will want to download it, add it to your application's
classpath, and change the enhancementEnabled attribute of the <setting>
element to true as well."

After setting up a sample similar to that in the book, I noticed that
lazy-loading only appears to work correctly if BOTH lazyLoadingEnabled
and enhancementEnabled are set to true. Running the following code
executes the selects as the objects are requested.

person = sqlMapper.queryForObject("Person.selectPerson"); // runs select
... from person
person.getAddress(); // runs select .. from address
person.getAddress().getState(); // runs select .. from state

Setting enhancementEnabled to false causes all of the select statements
to execute initially. Changing lazyLoadingEnabled to false doesn't
change the behavior.

person = sqlMapper.queryForObject("Person.selectPerson"); // runs all 3
select statements
person.getAddress();
person.getAddress().getState(); 

Is this correct behavior? If so, when would I benefit from
lazyLoadingEnabled = "true"?

I'm using iBatis version 2.3.0.677

Thanks,
Tim

Mime
View raw message