ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff Butler" <jeffgbut...@gmail.com>
Subject Re: lazy loading confusion
Date Wed, 27 Sep 2006 14:51:05 GMT
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?

Jeff Butler



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