Its not quite that simple, again due to how we recurse. This would need to be a "stack" stored on a ThreadLocal. Depends what you want to store in here I guess, but like I said we already have "context specific caches" and it would be good to consolidate all that information into one place. What I mean by the current "context specific caches" is the "extra" information passed to many of the listeners. Take merging for example:
interface MergeEventListener { public void onMerge(MergeEvent event); public void onMerge(MergeEvent event, Map copiedAlready); } 'copiedAlready' is a context specific cache. It tracks entity reference replacements. Many listeners have similar concept. Your proposal would certainly clean up those APIs. On Wed 10 Oct 2012 03:01:30 AM CDT, Emmanuel Bernard wrote: > On Wed 2012-10-10 9:26, Emmanuel Bernard wrote: >> Would using a service that store cache data structures by session work? I am >> thinking out loud here trying to push the cache idea before discarding it. >> That would require a weak-key concurrent map. The one I know is the one >> Jason wrote as a proposal for SE. I. Cannot remember where we use it but it >> must be in Search or in Validator. > > Actually that is simpler than that. Because the session cannot be used > in more than one thread, only one call stack is active per session. We > can keep the cache per session and lear it before every top level public > method > of session (ie persist, flush, merge etc). -- st...@hibernate.org http://hibernate.org _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev