クエリ結果を取得するために別のクラス (DAO) を呼び出すクラス ClassA があります。特定のビジネス シナリオでは、
ClassA はクエリ パラメータを使用して DAO を約 20,000 回呼び出します。このうち約 10,000 回、ClassA は同じクエリ パラメータのセットを DAO に送信します。明らかに、結果セットは同じになり、キャッシュできます。
以下は私が実装したコードです。
Class A
{
.
.
.
.
Map<String, CachData> cachDataMap= new HashMap<String, CachData>();
priavate void getQueryResults(String queryParam)
{
try {
Set<String> cacheSet = cachDataMap.keySet();
CachData cachData = null;
if(!cacheSet.contains(queryParam))
{
dao.getResuslts((queryParam)));
cachData = new CachData();
cachData.setResult0(__getStringResult(0));
cachData.setResult1(__getStringResult(1));
cachData.setResult2(__getStringResult(2));
cachData.setResult3(__getStringResult(3));
cachData.setResult4(__getStringResult(4));
cachData.setResult5(__getStringResult(5));
cachDataMap.put(queryParam, cachData);
}else
{
cachData = cachDataMap.get(queryParam);
}
} catch(Exception e) {
//handle here
}
}
フレームワークを使用する以外に、他に良い解決策はありますか? より良いデータ構造またはより良い方法.. 良いパフォーマンスのために?