2014-01-27 1 views
0

for 루프 내부에서 수천 건의 DB 호출로 인해 성능 문제가 발생했습니다. 출구가 있습니까?루프 내부의 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

cacheKey를 기반으로 데이터베이스에서 가져온 cacheItemDto를 moduleCacheMap.keySet()에서 가져와야하기 때문에 옵션 1을 사용할 수 없습니다. – Dnyanesh4IT

+0

해당 문장의 아무 것도 불가능하다고 규정합니다. 데이터베이스는 당신이 물건을 가지고있는 곳을 상관하지 않습니다. 그냥 모든 것을 선택하고 그것을 얻을 때 구문 분석하십시오. – Xabster

+0

감사합니다. @Xabster. 나는 대답을 얻었다. – Dnyanesh4IT

관련 문제