@Override public CacheImplementor initiateService( SessionFactoryImplementor sessionFactory, SessionFactoryOptions sessionFactoryOptions, ServiceRegistryImplementor registry) { final RegionFactory regionFactory = registry.getService( RegionFactory.class ); return ( ! NoCachingRegionFactory.class.isInstance( regionFactory ) ) ? new EnabledCaching( sessionFactory ) : new DisabledCaching( sessionFactory ); }
@Override public boolean contains(Class cls, Object primaryKey) { // JPA return containsEntity( cls, (Serializable) primaryKey ); }
@Override public void evictCollectionData(String role) { final CollectionPersister collectionDescriptor = sessionFactory.getMetamodel() .collectionPersister( role ); evictCollectionData( collectionDescriptor ); }
@Override public void evictQueryRegion(String regionName) { final QueryResultsCache cache = getQueryResultsCache( regionName ); if ( cache == null ) { return; } evictQueryResultRegion( cache ); }
@Override public void evictEntityData(String entityName) { evictEntityData( getSessionFactory().getMetamodel().entityPersister( entityName ) ); }
@Override public QueryResultsCache getQueryResultsCache(String regionName) throws HibernateException { if ( !getSessionFactory().getSessionFactoryOptions().isQueryCacheEnabled() ) { return null; } if ( regionName == null || regionName.equals( getDefaultQueryResultsCache().getRegion().getName() ) ) { return getDefaultQueryResultsCache(); } final QueryResultsCache existing = namedQueryResultsCacheMap.get( regionName ); if ( existing != null ) { return existing; } return makeQueryResultsRegionAccess( regionName ); }
@Override public void evict(Class cls) { // JPA evictEntityData( cls ); }
@Override public void evictNaturalIdData(Class entityClass) { evictNaturalIdData( entityClass.getName() ); }
@Override public void evictDefaultQueryRegion() { evictQueryResultRegion( defaultQueryResultsCache ); }
@Override public boolean containsQuery(String regionName) { final QueryResultsCache cache = getQueryResultsCacheStrictly( regionName ); return cache != null; }
@Override public void evictRegion(String regionName) { getRegion( regionName ).clear(); }
@Override public QueryResultsCache getQueryResultsCache(String regionName) throws HibernateException { if ( !getSessionFactory().getSessionFactoryOptions().isQueryCacheEnabled() ) { return null; } if ( regionName == null || regionName.equals( getDefaultQueryResultsCache().getRegion().getName() ) ) { return getDefaultQueryResultsCache(); } final QueryResultsCache existing = namedQueryResultsCacheMap.get( regionName ); if ( existing != null ) { return existing; } return makeQueryResultsRegionAccess( regionName ); }
@Override public void evict(Class cls, Object primaryKey) { // JPA call evictEntityData( cls, (Serializable) primaryKey ); }
protected void evictEntityData(EntityPersister entityDescriptor) { EntityPersister rootEntityDescriptor = entityDescriptor; if ( entityDescriptor.isInherited() && ! entityDescriptor.getEntityName().equals( entityDescriptor.getRootEntityName() ) ) { rootEntityDescriptor = getSessionFactory().getMetamodel().entityPersister( entityDescriptor.getRootEntityName() ); } evictEntityData( rootEntityDescriptor.getNavigableRole(), rootEntityDescriptor.getCacheAccessStrategy() ); }
@Override public void evictQueryRegion(String regionName) { final QueryResultsCache cache = getQueryResultsCache( regionName ); if ( cache == null ) { return; } evictQueryResultRegion( cache ); }
@Override public void evictNaturalIdData(String entityName) { evictNaturalIdData( sessionFactory.getMetamodel().entityPersister( entityName ) ); }
@Override public void evictQueryRegions() { if ( LOG.isDebugEnabled() ) { LOG.debug( "Evicting cache of all query regions." ); } evictQueryResultRegion( defaultQueryResultsCache ); for ( QueryResultsCache cache : namedQueryResultsCacheMap.values() ) { evictQueryResultRegion( cache ); } }
@Override public boolean containsQuery(String regionName) { final QueryResultsCache cache = getQueryResultsCacheStrictly( regionName ); return cache != null; }
@Override public void evictRegion(String regionName) { getRegion( regionName ).clear(); }
@Override public void evictEntityData(Class entityClass, Serializable identifier) { evictEntityData( entityClass.getName(), identifier ); }