我是 Mongo 的新手,正在尝试使用它在我们的应用程序内部实现缓存。我们有一个定义的缓存接口(public Cache(K, V))和几个替代实现(HashTable、JCS 等)。我需要为一些难以(即昂贵的)计算数据创建一个 MongoDB 实现。缓存数据将是 POJO 或 POJO 列表。
我的问题是将 Mongo 响应返回到 POJO 或(到目前为止我一直没有意识到的一点),返回到 POJO 列表中。
到目前为止的代码:
public class MongoDBCache<K, V> implements Cache<K, V>
{
private String name = null;
public MongoDBCache(String name)
{
this.name = name;
}
public V get(K key)
{
V result = null;
try
{
DB mdb = getMongoDB();
DBCollection mcol = mdb.getCollection(name);
BasicDBObject query = new BasicDBObject("_id", key.toString());
DBCursor cursor = mcol.find(query);
if (cursor.hasNext())
{
Gson gson = new Gson();
DBObject dbobj = cursor.next();
Class type = ????;
result = (V) gson.fromJson(dbobj.get("obj").toString(), type);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return result;
}
}
如果值只是一个 POJO(可以在 put 方法上获取类型,不理想但有效),我可以让它工作,但我不知道如何使它适用于 List。例如,一个 ArrayList<Long>
最终成为 ArrayList <Double>
。
有什么建议么?我可以在 GSON 中做些什么?我可以用反射做些什么?(我没有绑定到 GSON 或任何其他库,这只是我目前的尝试)。
谢谢,艾伦