[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-7186) Enabling 2nde level cache with filtered collections.
Lucas POUZAC (JIRA)
noreply at atlassian.com
Mon Mar 19 15:23:50 EDT 2012
[ https://hibernate.onjira.com/browse/HHH-7186?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=46018#comment-46018 ]
Lucas POUZAC commented on HHH-7186:
-----------------------------------
Hi Steve,
Why is not it a good idea ?
Can you add an option can be activated or not ?
> Enabling 2nde level cache with filtered collections.
> ----------------------------------------------------
>
> Key: HHH-7186
> URL: https://hibernate.onjira.com/browse/HHH-7186
> Project: Hibernate ORM
> Issue Type: Improvement
> Components: core
> Affects Versions: 3.3.1, 4.0.1, 4.1.1
> Reporter: Lucas POUZAC
>
> Actually, when we use filtered collection, the 2nde level cache can't be activate.
> Below, the code snippet :
> {code:title=org.hibernate.engine.loading.internal.CollectionLoadContext.java|borderStyle=solid}
> /**
> * Add the collection to the second-level cache
> *
> * @param lce The entry representing the collection to add
> * @param persister The persister
> */
> private void addCollectionToCache(LoadingCollectionEntry lce, CollectionPersister persister) {
> ...
> if ( !session.getEnabledFilters().isEmpty() && persister.isAffectedByEnabledFilters( session ) ) {
> // some filters affecting the collection are enabled on the session, so do not do the put into the cache.
> LOG.debug( "Refusing to add to cache due to enabled filters" );
> // todo : add the notion of enabled filters to the CacheKey to differentiate filtered collections from non-filtered;
> // but CacheKey is currently used for both collections and entities; would ideally need to define two seperate ones;
> // currently this works in conjuction with the check on
> // DefaultInitializeCollectionEventHandler.initializeCollectionFromCache() (which makes sure to not read from
> // cache with enabled filters).
> return; // EARLY EXIT!!!!!
> }
> ...
> }
> {code}
> {code:title=org.hibernate.event.internal.DefaultInitializeCollectionEventListener.java|borderStyle=solid}
> /**
> * Try to initialize a collection from the cache
> *
> * @param id The id of the collection of initialize
> * @param persister The collection persister
> * @param collection The collection to initialize
> * @param source The originating session
> * @return true if we were able to initialize the collection from the cache;
> * false otherwise.
> */
> private boolean initializeCollectionFromCache(Serializable id, CollectionPersister persister, PersistentCollection collection, SessionImplementor source) {
> ...
> if ( !source.getLoadQueryInfluencers().getEnabledFilters().isEmpty() && persister.isAffectedByEnabledFilters( source ) ) {
> LOG.trace( "Disregarding cached version (if any) of collection due to enabled filters" );
> return false;
> }
> ...
> }
> {code}
> Could you add this feature ?
> For example, we should modify the cache key to add the filter name.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list