mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
102 lines
2.4 KiB
Java
102 lines
2.4 KiB
Java
package io.ebeaninternal.server.cache;
|
|
|
|
import io.ebean.cache.ServerCache;
|
|
import io.ebean.cache.ServerCacheType;
|
|
import io.ebeaninternal.server.cluster.ClusterManager;
|
|
|
|
/**
|
|
* Manages the bean and query caches.
|
|
*/
|
|
public class DefaultServerCacheManager implements SpiCacheManager {
|
|
|
|
private final ClusterManager clusterManager;
|
|
|
|
private final DefaultCacheHolder cacheHolder;
|
|
|
|
private final boolean localL2Caching;
|
|
|
|
private final String serverName;
|
|
|
|
/**
|
|
* Create with a cache factory and default cache options.
|
|
*/
|
|
public DefaultServerCacheManager(CacheManagerOptions builder) {
|
|
this.clusterManager = builder.getClusterManager();
|
|
this.serverName = builder.getServerName();
|
|
this.localL2Caching = builder.isLocalL2Caching();
|
|
this.cacheHolder = new DefaultCacheHolder(builder);
|
|
}
|
|
|
|
/**
|
|
* Construct when l2 cache is disabled.
|
|
*/
|
|
public DefaultServerCacheManager() {
|
|
this(new CacheManagerOptions());
|
|
}
|
|
|
|
@Override
|
|
public boolean isLocalL2Caching() {
|
|
return localL2Caching;
|
|
}
|
|
|
|
/**
|
|
* Clear all caches.
|
|
*/
|
|
@Override
|
|
public void clearAll() {
|
|
cacheHolder.clearAll();
|
|
if (clusterManager != null) {
|
|
clusterManager.cacheClearAll(serverName);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void clearAllLocal() {
|
|
cacheHolder.clearAll();
|
|
}
|
|
|
|
@Override
|
|
public void clear(Class<?> beanType) {
|
|
cacheHolder.clear(name(beanType));
|
|
if (clusterManager != null) {
|
|
clusterManager.cacheClear(serverName, beanType);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void clearLocal(Class<?> beanType) {
|
|
cacheHolder.clear(name(beanType));
|
|
}
|
|
|
|
@Override
|
|
public ServerCache getCollectionIdsCache(Class<?> beanType, String propertyName) {
|
|
return cacheHolder.getCache(beanType, name(beanType) + "." + propertyName, ServerCacheType.COLLECTION_IDS);
|
|
}
|
|
|
|
@Override
|
|
public ServerCache getNaturalKeyCache(Class<?> beanType) {
|
|
return cacheHolder.getCache(beanType, name(beanType), ServerCacheType.NATURAL_KEY);
|
|
}
|
|
|
|
/**
|
|
* Return the query cache for a given bean type.
|
|
*/
|
|
@Override
|
|
public ServerCache getQueryCache(Class<?> beanType) {
|
|
return cacheHolder.getCache(beanType, name(beanType), ServerCacheType.QUERY);
|
|
}
|
|
|
|
/**
|
|
* Return the bean cache for a given bean type.
|
|
*/
|
|
@Override
|
|
public ServerCache getBeanCache(Class<?> beanType) {
|
|
return cacheHolder.getCache(beanType, name(beanType), ServerCacheType.BEAN);
|
|
}
|
|
|
|
private String name(Class<?> beanType) {
|
|
return beanType.getName();
|
|
}
|
|
|
|
}
|