Package com.altibase.document.impl
Class DocResultImpl
java.lang.Object
com.altibase.document.impl.DocResultImpl
- All Implemented Interfaces:
DocResult,FetchResult<AltibaseDocument>,AutoCloseable,Iterable<AltibaseDocument>,Iterator<AltibaseDocument>
`java.sql.ResultSet`을 표준
Iterator 인터페이스로 변환한다.
이 클래스는 두 가지 모드로 동작한다:
- 라이브 스트리밍 모드: 처음에는 데이터베이스의 live `ResultSet`으로부터 데이터를 순차적으로 가져온다.
- 인메모리 캐시 모드: `ResultSet`의 모든 데이터를 읽고 나면, 내부 리스트(
mFetchList)에 모든 문서를 저장하고 `ResultSet`과 `Statement`를 닫는다. 이후에는 메모리에 캐시된 데이터를 기반으로 반복 작업을 수행하여, 결과 객체의 재사용이 가능하다.
-
Constructor Summary
ConstructorsConstructorDescriptionDocResultImpl(ResultSet aRs, Statement aStmt, AltibaseCollection aCollection) 지정된 JDBC 리소스와 컬렉션 컨텍스트를 사용하여 새로운DocResultImpl인스턴스를 생성한다. -
Method Summary
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.altibase.document.api.FetchResult
iteratorMethods inherited from interface java.lang.Iterable
forEach, spliteratorMethods inherited from interface java.util.Iterator
forEachRemaining, remove
-
Constructor Details
-
DocResultImpl
지정된 JDBC 리소스와 컬렉션 컨텍스트를 사용하여 새로운DocResultImpl인스턴스를 생성한다.이 생성자로 생성된 인스턴스는 초기에 '라이브 스트리밍 모드'로 동작한다. 이 클래스는 전달받은
ResultSet과Statement의 생명주기를 관리할 책임을 가지며, 반복 작업이 완료되면 내부적으로 리소스를 안전하게 해제한다.- Parameters:
aRs- 데이터를 스트리밍할 원본 JDBCResultSet. null이 아니어야 한다.aStmt-aRs를 생성한 JDBCStatement.aRs와 함께 닫아야 할 리소스이다.aCollection- 조회된 데이터를AltibaseDocument로 변환하는 데 사용할 컬렉션. 팩토리 역할을 수행한다.
-
-
Method Details
-
hasNext
public boolean hasNext()다음에 반환할 문서가 있는지 확인한다. 라이브 스트리밍 모드에서는 `ResultSet`에서, 인메모리 캐시 모드에서는 내부 리스트에서 확인한다.- Specified by:
hasNextin interfaceIterator<AltibaseDocument>
-
next
다음 문서를 반환하고 커서를 이동시킨다.- Specified by:
nextin interfaceIterator<AltibaseDocument>
-
close
public void close()DB 리소스를 해제한다. 이 메서드가 호출되면 인메모리 캐시 모드로 전환된다. 이 메서드는 외부에서 호출할 수 있지만, 보통은 모든 데이터를 읽었을 때 내부적으로 호출된다.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceFetchResult<AltibaseDocument>
-
fetchAll
모든 문서를 가져와 리스트에 담아 반환한다. 이 메서드 호출 후에는 인메모리 캐시 모드로 전환되며, 결과 객체를 재사용하여 반복할 수 있다. 재사용 시에는 rewind()를 호출하여 커서를 처음으로 되돌리는 것이 좋다.- Specified by:
fetchAllin interfaceFetchResult<AltibaseDocument>- Returns:
- 결과셋의 모든 항목을 담은
List
-
count
public long count()결과 집합에 포함된 문서의 총 개수를 반환한다. 내부적으로 모든 문서를 가져오므로, 이 메서드 호출 후에는 인메모리 캐시 모드로 전환된다.- Specified by:
countin interfaceFetchResult<AltibaseDocument>- Returns:
- 결과셋의 전체 항목 수
-
rewind
public void rewind()캐시된 결과의 이터레이터 커서를 처음으로 되돌린다. 이 메서드는 모든 결과가 메모리에 로드된 후에만 호출할 수 있다.- Specified by:
rewindin interfaceDocResult- Throws:
IllegalStateException- 아직 데이터베이스로부터 스트리밍 중일 때 호출된 경우
-