package message.cache.utils; import message.cache.Cache; import java.io.Serializable; /** * cache object * * @author sunhao(sunhao.java@gmail.com) * @version V1.0, 12-4-9 上午9:34 */ public class ObjectCache { private static final String KEY_SEPARATOR = "#"; private Cache cache; /** * put object into cache * * @param object object need to be cache * @param pkValue value of object pkId */ public void put(Object object, Serializable pkValue){ if(object != null) this.cache.put(generateCacheKey(object.getClass(), pkValue), object); } /** * get cache object from cache * * @param clazz cache object class name * @param pkValue cache object pkId * @return */ public Object get(Class clazz, Serializable pkValue){ return this.cache.get(generateCacheKey(clazz, pkValue)); } /** * get cache object from cahce by pkId * * @param clazz cache object class name * @param pkValue cache object pkId */ public void remove(Class clazz, Serializable pkValue){ if(pkValue != null) this.cache.remove(generateCacheKey(clazz, pkValue)); } /** * remove all cache */ public void removeAll(){ this.cache.removeAll(); } /** * create cache key by cache object class name and pkId * * @param clazz cache object class name * @param pkValue cache object pkId * @return */ private String generateCacheKey(Class clazz, Serializable pkValue) { //将缓存用作的键设成缓存对象的类名 + 对象主键的类名 + 主键值 StringBuffer cacheKey = new StringBuffer(); cacheKey.append(clazz.getName()).append(KEY_SEPARATOR).append(pkValue.getClass().getName()).append(KEY_SEPARATOR).append(pkValue); return cacheKey.toString(); } public void setCache(Cache cache) { this.cache = cache; } }