Package org.apache.openjpa.jdbc.kernel
Class PagingResultObjectProvider
java.lang.Object
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider
org.apache.openjpa.jdbc.kernel.PagingResultObjectProvider
- All Implemented Interfaces:
ResultObjectProvider
,Closeable
Object provider implementation that fetches one page of results at a
a time as it scrolls. If the
getPagedFields(org.apache.openjpa.jdbc.sql.Select, org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.kernel.JDBCStore, org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration, int, long)
method returns a
non-null bit set, this this provider is a good fit for your configuration.
The method tests the following conditions:
- The eager fetch mode is
parallel
. - The select's result should be treated as a large result set.
- The mapping being selected has fields that use parallel selects under the current fetch configuration.
join
. This provider will take care of performing
parallel
mode batch selects for each page it reads.- Author:
- Abe White
-
Field Summary
Fields inherited from class org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider
_res
-
Constructor Summary
ConstructorDescriptionPagingResultObjectProvider
(SelectExecutor sel, ClassMapping[] mappings, JDBCStore store, JDBCFetchConfiguration fetch, BitSet[] paged, long size) Constructor.PagingResultObjectProvider
(SelectExecutor sel, ClassMapping mapping, JDBCStore store, JDBCFetchConfiguration fetch, BitSet paged, long size) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionboolean
absolute
(int pos) Move to the given 0-based position.static BitSet
getPagedFields
(Select sel, ClassMapping mapping, JDBCStore store, JDBCFetchConfiguration fetch, int eagerMode, long size) Return a bit set representing batch select fields that will be paged, or null if no fields need paging, which indicates that this provider should not be used.int
Return the page size in use.Instantiate the current result object.boolean
next()
Advance the input to the next position.void
open()
Open the result.Methods inherited from class org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider
close, getFetchConfiguration, getResult, getSelect, getStore, handleCheckedException, reset, setSize, size, supportsRandomAccess
-
Constructor Details
-
PagingResultObjectProvider
public PagingResultObjectProvider(SelectExecutor sel, ClassMapping mapping, JDBCStore store, JDBCFetchConfiguration fetch, BitSet paged, long size) Constructor.- Parameters:
sel
- the select to executemapping
- the mapping of the result objectsstore
- the store manager to delegate loading tofetch
- the fetch configuration, or null for defaultpaged
- the bit set returned fromgetPagedFields(org.apache.openjpa.jdbc.sql.Select, org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.kernel.JDBCStore, org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration, int, long)
size
- the known maximum size of the result, orLong.MAX_VALUE
for no known limit
-
PagingResultObjectProvider
public PagingResultObjectProvider(SelectExecutor sel, ClassMapping[] mappings, JDBCStore store, JDBCFetchConfiguration fetch, BitSet[] paged, long size) Constructor.- Parameters:
sel
- the select to executemappings
- the mappings for the independent classes of the result objectsstore
- the store manager to delegate loading tofetch
- the fetch configuration, or null for defaultpaged
- the bit sets returned fromgetPagedFields(org.apache.openjpa.jdbc.sql.Select, org.apache.openjpa.jdbc.meta.ClassMapping, org.apache.openjpa.jdbc.kernel.JDBCStore, org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration, int, long)
for each select in the possible unionsize
- the known maximum size of the result, orLong.MAX_VALUE
for no known limit
-
-
Method Details
-
getPagedFields
public static BitSet getPagedFields(Select sel, ClassMapping mapping, JDBCStore store, JDBCFetchConfiguration fetch, int eagerMode, long size) Return a bit set representing batch select fields that will be paged, or null if no fields need paging, which indicates that this provider should not be used. -
getPageSize
public int getPageSize()Return the page size in use. -
open
Description copied from interface:ResultObjectProvider
Open the result. This will be called beforeResultObjectProvider.next()
,ResultObjectProvider.absolute(int)
, orResultObjectProvider.size()
.- Specified by:
open
in interfaceResultObjectProvider
- Overrides:
open
in classSelectResultObjectProvider
- Throws:
SQLException
-
next
Description copied from interface:ResultObjectProvider
Advance the input to the next position. Returntrue
if there is more data; otherwisefalse
.- Specified by:
next
in interfaceResultObjectProvider
- Overrides:
next
in classSelectResultObjectProvider
- Throws:
SQLException
-
absolute
Description copied from interface:ResultObjectProvider
Move to the given 0-based position. This method is only called for providers that support random access. Returntrue
if there is data at this position; otherwisefalse
. This may be invoked in place ofResultObjectProvider.next()
.- Specified by:
absolute
in interfaceResultObjectProvider
- Overrides:
absolute
in classSelectResultObjectProvider
- Throws:
SQLException
-
getResultObject
Description copied from interface:ResultObjectProvider
Instantiate the current result object. This method will only be called afterResultObjectProvider.next()
orResultObjectProvider.absolute(int)
.- Throws:
SQLException
-