2014-01-27 47 views
0

由於在for循環中進行了數千次數據庫調用,我正面臨性能問題。 有什麼出路嗎?循環中有沒有其他DB調用的替代方法?

for(String cacheKey : moduleCacheMap.keySet()) 
    { 
     if(inputCachekey != null && inputCachekey.equalsIgnoreCase(cacheKey)) 
     { 
      CacheItemDto cacheItemDto = moduleCacheMap.get(cacheKey) ; 
      cacheList = cacheDao.getCacheList(cacheItemDto) ; 
     } 
    } 

這裏cacheDao.getCacheList每次發射一個新的數據庫事務。

回答

1

1)取在一個單一的查詢,而不是循環所需要的行或

2)做一個懶加載cacheList如果你不馬上需要的所有數據。

+0

選項1是不可能的,因爲我需要從基於從moduleCacheMap.keySet獲取的數據庫中獲取cacheItemDto() – Dnyanesh4IT

+0

該語句中沒有任何內容規定它不可能。數據庫不關心你有什麼東西。只需選擇所有內容並在獲取時解析它。 – Xabster

+0

謝謝@ Xabster。我得到了答案。 – Dnyanesh4IT

相關問題