This was a topic of much debate. It does that to allow internal references to private fields. But some people don't like that behavior, so in the next release (or in trunk if you want to check it out and build it), there's a configuration switch. The docs are already updated, so look for the aggressiveLazyLoad setting.
Clinton 2010/2/18 Ing. Jan Novotný <novotn...@gmail.com> > Hello again, > > I've found that for lazily loaded objects triggers multiple unnecessary > selects and are executed all at load time not at the time, when I touch the > property. I use 3-beta-9 and my settings are following: > > <settings> > <setting name="cacheEnabled" value="true"/> > <setting name="lazyLoadingEnabled" value="true"/> > <setting name="multipleResultSetsEnabled" value="true"/> > <setting name="useColumnLabel" value="true"/> > <setting name="useGeneratedKeys" value="false"/> > </settings> > > <resultMap id="thinProductLazyLoaded" type="product"> > <id property="id" column="id"/> > <result property="name" column="name"/> > <association property="group" column="idGroup" javaType="group" > > select="cz.novoj.ibatis.ProductGroupMapper.getGroupById"/> > </resultMap> > > <select id="getLazyProductById" parameterType="int" > resultMap="thinProductLazyLoaded"> > select * from product where id = #{id} > </select> > > <select id="getGroupById" parameterType="int" resultType="group"> > select * from productGroup where id = #{id} > </select> > > Test: > > @Test > public void testGetLazyProductById() throws Exception { > Product product = productMapper.getLazyProductById(1); > assertNotNull(product); > System.out.println("#1"); > assertEquals(1, (int)product.getId()); > System.out.println("#2"); > assertEquals("Lenovo ThinkCentre 250GB Serial ATA Hard Disk Drive", > product.getName()); > assertNotNull(product.getGroup()); > System.out.println("#3"); > assertEquals("HDD", product.getGroup().getName()); > assertEquals("HARDWARE", product.getGroup().getGroupType()); > assertNull(product.getTags()); > } > > Output: > > DEBUG [main][2010-02-18 14:42:34,140][java.sql.Connection]: ooo Connection > Opened > DEBUG [main][2010-02-18 14:42:34,234][java.sql.PreparedStatement]: ==> > Executing: select * from product where id = ? > DEBUG [main][2010-02-18 14:42:34,234][java.sql.PreparedStatement]: ==> > Parameters: 1(Integer) > DEBUG [main][2010-02-18 14:42:34,250][java.sql.ResultSet]: <== Columns: > ID, NAME, IDGROUP > DEBUG [main][2010-02-18 14:42:34,250][java.sql.ResultSet]: <== Row: > 1, Lenovo ThinkCentre 250GB Serial ATA Hard Disk Drive, 1 > DEBUG [main][2010-02-18 14:42:34,359][java.sql.Connection]: xxx Connection > Closed > #1 > DEBUG [main][2010-02-18 14:42:34,375][java.sql.Connection]: ooo Connection > Opened > DEBUG [main][2010-02-18 14:42:34,375][java.sql.PreparedStatement]: ==> > Executing: select * from productGroup where id = ? > DEBUG [main][2010-02-18 14:42:34,375][java.sql.PreparedStatement]: ==> > Parameters: 1(Integer) > DEBUG [main][2010-02-18 14:42:34,375][java.sql.ResultSet]: <== Columns: > ID, NAME, GROUPTYPE > DEBUG [main][2010-02-18 14:42:34,375][java.sql.ResultSet]: <== Row: > 1, HDD, HARDWARE > DEBUG [main][2010-02-18 14:42:34,390][java.sql.Connection]: xxx Connection > Closed > DEBUG [main][2010-02-18 14:42:34,390][java.sql.Connection]: ooo Connection > Opened > DEBUG [main][2010-02-18 14:42:34,390][java.sql.PreparedStatement]: ==> > Executing: select * from productGroup where id = ? > DEBUG [main][2010-02-18 14:42:34,390][java.sql.PreparedStatement]: ==> > Parameters: 1(Integer) > DEBUG [main][2010-02-18 14:42:34,390][java.sql.ResultSet]: <== Columns: > ID, NAME, GROUPTYPE > DEBUG [main][2010-02-18 14:42:34,390][java.sql.ResultSet]: <== Row: > 1, HDD, HARDWARE > DEBUG [main][2010-02-18 14:42:34,390][java.sql.Connection]: xxx Connection > Closed > #2 > #3 > > Could someone explain how lazy really loading works? As I see, the lazy > loading paradigm has changed a lot since iBatis 2.x > > Jan > > -- > -------------------------------------------------------------- > Ing. Jan Novotný > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > http://blog.novoj.net > Myšlenky dne otce Fura > -------------------------------------------------------------- >