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 15:35:38 GMT

On Sep 27, 2006, at 10:00 AM, Tom Duffey wrote:

>
> On Sep 27, 2006, at 9:51 AM, Jeff Butler wrote:
>
>> Try explicitly enabling lazy loading:
>>
>>  <settings enhancementEnabled="true"
>>     lazyLoadingEnabled="true"/>
>>
>> It seems to me I remember some others reporting that it had to be  
>> specifically enabled (even though it is supposed to be enabled by  
>> default).  Maybe we have a bug?
>
> Using those settings results in the same thing.  I should mention  
> that I have other lazily-loaded properties that iBATIS is handling  
> properly.  I'm going to try removing Spring and see if it makes any  
> difference.

Well I'm stumped.  I pulled out Spring and the problem is still  
happening.  Is there any way for me to get more debugging information  
from iBATIS about why it thinks it needs to load the association?

Tom

>
>> On 9/27/06, Tom Duffey <tduffey@utilivisor.com> wrote:
>>
>> 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