List patternList=new ArrayList<String>();
ResultSet rs=stat.executeQuery("select file_pattern from Pattern_table");
while(rs.next()){
sourcePattern=rs.getString(1);
patternList.add(sourcePattern);
}
여기서 각 레코드를 살펴보고 list
에 추가합니다. ResultSet
을 트래버스하고 list
에 레코드를 추가하는 데 너무 많은 시간이 걸립니다.ResultSet 객체를 ArrayList로 변환하는 방법
ResultSet
의 모든 레코드를 list
에 한 번에 추가하는 다른 방법이 있습니까?
또는 더 나은 성능을 얻기 위해 따라갈 수있는 다른 방법은 없습니까?
이 루프의 속도를 높이기 위해 자바 측에서 할 수있는 일은 거의 없습니다. (아마도'ArrayList'를 미리 설정하십시오.하지만 그것에 관한 내용입니다). 실제로 성능 문제가 여기에서 오는 것인지 의심 스럽습니다. 나는이 코드가 느리다면 피할 수없는 것들 ('rs.next()')의 데이터베이스 측면 때문에 - 당신은보다 빠른 쿼리를 작성할 수 있고, 그러나 당신은'rs.next()'의 어떤 형태가 아닌 다른 방법을 반복 할 방법이 없습니다. 시간이 실제로 소요 된 시간 (예 : Java 코드가 느리거나 데이터베이스에서 I/O를 기다리는 데 소요되는 시간)을 보려면 프로파일해야합니다. – GPI
가능한 경우 조건을 사용하여 데이터를 필터링하여 루프 할 요소를 줄이십시오. 아쉽게도 ResultSet은 반복 만 할 수 있습니다. – Vektor88
JDBC를 직접 사용해야합니까? 대신 JPA를 사용해보십시오. – Stefan