ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tom Duffey <tduf...@utilivisor.com>
Subject Re: lazy loading confusion
Date Wed, 27 Sep 2006 14:34:15 GMT

On Sep 27, 2006, at 9:28 AM, Poitras Christian wrote:

> Maybe your application is accessing the "members" property when the
> object is populating.
>
> Try to turn on logging and see what happens. Add a log statement in  
> your
> "members" property getter to be sure.

Did this.  The getter is never called, only the setter.  This  
application is using Spring 1.x for some AOP logging, could it be  
manipulating some bytecode somehow to make iBATIS think it needs to  
load the data?

Tom

>
> Christian
>
> -----Original Message-----
> From: Tom Duffey [mailto:tduffey@utilivisor.com]
> Sent: Wednesday, 27 September 2006 09:25
> To: user-java@ibatis.apache.org
> Subject: Re: lazy loading confusion
>
>
> On Sep 27, 2006, at 1:41 AM, Niels Beekman wrote:
>
>> Can we see your config?
>
> What all would you like to see?  It's a large application and the
> example I posted is just a snippet.  Here's more from my sql config  
> and
> dao config:
>
> <sqlMapConfig>
>      <properties resource="org/projectFoundry/config/ 
> jdbc.properties"/>
>
>      <settings enhancementEnabled="true"/>
>
>      <transactionManager type="JDBC">
>          <dataSource  type="SIMPLE">
>              <property name="JDBC.Driver" value="${JDBC.Driver}"/>
>              <property name="JDBC.ConnectionURL" value="$
> {JDBC.ConnectionURL}"/>
>              <property name="JDBC.Username" value="${JDBC.Username}"/>
>              <property name="JDBC.Password" value="${JDBC.Password}"/>
>          </dataSource>
>      </transactionManager>
>
>      <sqlMap resource="org/projectFoundry/persistence/project/
> ProjectSqlMap.xml"/>
>      <sqlMap resource="org/projectFoundry/persistence/user/
> UserSqlMap.xml"/>
>      etc.
> </sqlMapConfig>
>
> <daoConfig>
>      <context>
>
>          <transactionManager type="SQLMAP">
>              <property name="SqlMapConfigResource" value="org/
> projectFoundry/config/sql-map.xml"/>
>          </transactionManager>
>
>          <dao
> interface="org.projectFoundry.persistence.project.ProjectDao"
> implementation="org.projectFoundry.persistence.project.ProjectSqlMapDa 
> o"
>
> />
>          <dao interface="org.projectFoundry.persistence.user.UserDao"
> implementation="org.projectFoundry.persistence.user.UserSqlMapDao"/>
>          etc.
>    </context>
> </daoConfig>
>
> Tom
>
>>
>> -----Original Message-----
>> From: Tom Duffey [mailto:tduffey@utilivisor.com]
>> Sent: woensdag 27 september 2006 7:34
>> To: user-java@ibatis.apache.org
>> Subject: lazy loading confusion
>>
>> Hi All,
>>
>> I have a Project class with a list of Members.  It is my  
>> understanding
>
>> that I can turn on lazy loading in my sql map config, define a  
>> Project
>
>> result map like:
>>
>>     <resultMap id="result" class="foo.Project">
>>          <result property="projectId" column="id"/>
>>          <result property="members" column="id"
>> select="Member.listByProject"/>
>>      </resultMap>
>>
>> and then retrieve a project and the members will not be retrieved
>> unless I call getMembers() on the project instance.  Is this how it's
>> supposed to work?  What I'm finding is that the members list is
>> populated even if I do not call getMembers().  To back this idea I
>> renamed the property in the result map to "members2" and added a new
>> members2 attribute to the project class (To make sure I didn't miss
>> any calls to getMembers) and sure enough it is still populated when I
>> retrieve the project.
>>
>> What gives?  I thought the point of lazy loading was to not load data
>> unless I ask for it.  I'm using iBATIS 2.1.7 for Java.
>>
>> Best Regards,
>>
>> Tom Duffey
>
>


Mime
View raw message