Our app fails to scale sufficiently and I'd traced our problems to eager loading of
all OneToOne relations when any single one is accessed. I would like to fix that but
wanted to get feedback first. I'm referring to Hibernate Core 3.3.1.GA below:
Currently in AbstractFieldInterceptor.intercept():
"uninitializedFields = null; //let's assume that there is only one lazy fetch
group, for now!"
proposed fix:
-after 'result' is returned call uninitializedFields.remove(fieldname). Question:
should this only be done if result != null?
And then AbstractEntityPersister.initializeLazyProperties() calls methods that initialize
*all* properties even though a specific fieldname is supplied:
* initializeLazyPropertiesFromDatastore or
* initializeLazyPropertiesFromCache
Proposed fix:
-In both cases, determine appropriate 'j' value by searching lazyPropertyNames for
'fieldName'
-only call nullSafeGet, and initializeLazyProperty( fieldName, entity, session, snapshot,
j, propValue ) once.
What do folks think?
Thanks,
-nikita