ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Poitras Christian" <Christian.Poit...@ircm.qc.ca>
Subject RE: lazy loading confusion
Date Wed, 27 Sep 2006 16:09:38 GMT
What is the type of your "members" property.
 
Remember that final objects cannot be lazy loaded.
If you are using a final object in your "members" property, iBATIS will
definetly load it even in lazy mode.
 
Christian

________________________________

From: Tom Duffey [mailto:tduffey@utilivisor.com] 
Sent: Wednesday, 27 September 2006 11:36
To: user-java@ibatis.apache.org
Subject: Re: lazy loading confusion



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 <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