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:44:06 GMT

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

> Try to turn on enhancement (also add needed jar) for lazy loading and
> see what happens.

Same thing.  I'm using CGLIB 2.1 which was the oldest version I could  
find on their site.

Tom

> -----Original Message-----
> From: Tom Duffey [mailto:tduffey@utilivisor.com]
> Sent: Wednesday, 27 September 2006 10:34
> To: user-java@ibatis.apache.org
> Subject: Re: lazy loading confusion
>
>
> 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.ProjectSqlMapD 
>> a
>> 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