나는 Identity Map 패턴으로 Data Mapper 패턴을 구현했습니다. 간단히 말해서, 데이터베이스에서 2000 개의 객체를 원할 때, 매퍼는 이미 생성 된 객체에 대한 참조를 포함하는 해시 맵에 대해 결과 집합을 검사합니다. id가 이미 해시 맵에 있으면 이전 객체가 반환 배열에 대신 추가됩니다. 그렇지 않으면 새 오브젝트가 작성되어 리턴 배열에 추가됩니다. 반환 배열에는 2000 개의 객체가 포함됩니다.이 경우 어떤 방법을 사용해야합니까?
참고 :이 수치는 이론 값입니다. 플랫폼이 자주 출현 할 수 있으므로 분당 또는 초 단위로 여러 번 발생할 수 있습니다.
질문 : 어떤 옵션이 더 좋고 그 이유는 무엇입니까?
) 데이터베이스에서 모든 2000 개체를 검색하십시오. 레코드 집합 (2000 행)을 반복하고 모든 ID를 ID 맵과 비교하여 확인하십시오. 그곳에 있으면 ID 맵의 참조 된 객체를 객체 배열에 추가하십시오. 그렇지 않은 경우 새 객체를 만들어 결과 배열에 추가합니다.
B) 신원 맵에있는 모든 ID를 제외하는 (아마도 HUGE) sql 쿼리를 만듭니다. 새 객체에 대한 데이터 만 포함하는 레코드 세트를 가져옵니다. 모든 행에 대한 ID 맵을 확인하지 않고 새 오브젝트를 작성하십시오. 많은 문자열 연결 작업을 통합하여 쿼리를 작성하지만 전체 해시 맵 조회를 절약 할 수 있습니다.
어떤 방법을 택하겠습니까?