私はMongoを初めて使用し、それを使用してアプリケーションの内部にキャッシュを実装しようとしています。いくつかの代替実装 (HashTable、JCS など) を備えた定義済みのキャッシュ インターフェイス (public Cache(K, V) ) があります。データを計算するのが難しい (つまり、コストがかかる) ための 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 メソッドで型を取得できますが、理想的ではありませんが機能します)、これを機能させることはできますが、リストに対して機能させる方法がわかりません。例として、ArrayListは最終的<Long>
に ArrayListになり<Double>
ます。
助言がありますか?GSONでできることはありますか?リフレクションでできることはありますか?(私はGSONや他のライブラリに縛られていません。これは私の現在の試みです)。
ありがとう、アラン