I have some components that retrieve and store a copy of a db object in a local variable which is accessed many times by the component. The object is lazily loaded like this:
Object getCachedDBObject() {
if (m_cachedDBObject == null) {
m_cachedDBObject = retrieveObjectFromDB();
}
return m_cachedDBObject;
}
At the end of the current cycle, m_cachedDBObject needs to be nulled out so the next time the component is used it'll get a new copy.
What's the best way to do this? Right now I'm making my components implement PageDetachListener and override finishLoad() like this:
public finishLoad() {
getPage().addPageDetachListener(this);
}
public void pageDetached(PageEvent pageEvent){
m_cachedDBObject = null;
}
Is this the right way to do it? Is there a better way? I tried overriding cleanUpAfterRender but that didn't seem to work... could easily have been user error though.
