3

私は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や他のライブラリに縛られていません。これは私の現在の試みです)。

ありがとう、アラン

4

1 に答える 1