ibatis-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "S Boyd (JIRA)" <ibatis-...@incubator.apache.org>
Subject [jira] Created: (IBATIS-246) Lazy Load per Result
Date Wed, 18 Jan 2006 16:33:43 GMT
Lazy Load per Result

         Key: IBATIS-246
         URL: http://issues.apache.org/jira/browse/IBATIS-246
     Project: iBatis for Java
        Type: New Feature
  Components: SQL Maps  
    Versions: 2.1.6, 2.1.5    
 Environment: Any
    Reporter: S Boyd

I have a need for LazyLoad on a per result basis.  Since I saw this feature listed in the
wish list for 2.1.5, I attempted to add it to this version's source.  The lazy load global
setting should be the default setting assigned for all results in the sqlmaps.  If this is
not desired for a particular result, then it can be overrided by the lazyLoad="true|false"
on the affected result.  In adding this feature, I had to modify the sqlmap dtd and three
java classes:  SqlMapParser, BasicResultMap, and BasicResultMapping.

In the SqlMapParser, I retrieved the lazy load property from the result element at the beginning
of the code block.  If the lazyLoad property is not specified in the result, then the global
setting is used.  This logic is inserted on line 416.

Lines: 407-414
407:        BasicResultMapping mapping = new BasicResultMapping();
/* code omitted here */
414:        mapping.setNestedResultMapName(resultMapName);
		if(lazyLoad != null && lazyLoad.length() > 0){
		else{ // use global lazy load setting

In the BasicResultMap, I temporarily override the global lazy load setting with the BasicResultMapping's
lazyload value. The reason for this was to avoid changing the ResultLoader.loadResult signature.
 Maybe this can be improved upon.

Line 442 was modifed to this:

               /* Set global lazy load setting to mapping's lazy load */
		boolean globalLazyLoad = client.isLazyLoadingEnabled();
		result = ResultLoader.loadResult(client, statementName, parameterObject, targetType);
		/* Reset global lazy load to original value */

In the BasicResultMapping, I simply added a new property (lazyLoad:boolean) with set/getters.

Please let me know if this can be reviewed/refined and possibly added to the next release.
 Or if you want the modifed java files and dtd.


This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:

View raw message