Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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

    public class PagingResultObjectProvider

extends SelectResultObjectProvider

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.

To use this provider, select the candidate mapping with eager fetch mode set to `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
`PagingResultObjectProvider(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
`boolean` | `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` | `getPageSize()` Return the page size in use.
`Object` | `getResultObject()` 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`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### PagingResultObjectProvider

    public PagingResultObjectProvider(SelectExecutor sel,
                                      ClassMapping mapping,
                                      JDBCStore store,
                                      JDBCFetchConfiguration fetch,
                                      BitSet paged,
                                      long size)

  Constructor.

  Parameters:
    `sel` - the select to execute
    `mapping` - the mapping of the result objects
    `store` - the store manager to delegate loading to
    `fetch` - the fetch configuration, or null for default
    `paged` - the bit set returned from `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)`
    `size` - the known maximum size of the result, or `Long.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 execute
    `mappings` - the mappings for the independent classes of the result objects
    `store` - the store manager to delegate loading to
    `fetch` - the fetch configuration, or null for default
    `paged` - the bit sets returned from `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)` for each select in the possible union
    `size` - the known maximum size of the result, or `Long.MAX_VALUE` for no known limit

Method Detail

### 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.

  See Also:
    `PagingResultObjectProvider(org.apache.openjpa.jdbc.sql.SelectExecutor, org.apache.openjpa.jdbc.meta.ClassMapping[], org.apache.openjpa.jdbc.kernel.JDBCStore, org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration, java.util.BitSet[], long)`

### getPageSize

    public int getPageSize()

  Return the page size in use.

### open

    public void open()
              throws SQLException

  Description copied from interface: `ResultObjectProvider`
  Open the result. This will be called before `ResultObjectProvider.next()`, `ResultObjectProvider.absolute(int)`, or `ResultObjectProvider.size()`.

  Specified by:
    `open` in interface `ResultObjectProvider`
  Overrides:
    `open` in class `SelectResultObjectProvider`
  Throws:
    `SQLException`

### next

    public boolean next()
                 throws SQLException

  Description copied from interface: `ResultObjectProvider`
  Advance the input to the next position. Return `true` if there is more data; otherwise `false`.

  Specified by:
    `next` in interface `ResultObjectProvider`
  Overrides:
    `next` in class `SelectResultObjectProvider`
  Throws:
    `SQLException`

### absolute

    public boolean absolute(int pos)
                     throws SQLException

  Description copied from interface: `ResultObjectProvider`
  Move to the given 0-based position. This method is only called for providers that support random access. Return `true` if there is data at this position; otherwise `false`. This may be invoked in place of `ResultObjectProvider.next()`.

  Specified by:
    `absolute` in interface `ResultObjectProvider`
  Overrides:
    `absolute` in class `SelectResultObjectProvider`
  Throws:
    `SQLException`

### getResultObject

    public Object getResultObject()
                           throws SQLException

  Description copied from interface: `ResultObjectProvider`
  Instantiate the current result object. This method will only be called after `ResultObjectProvider.next()` or `ResultObjectProvider.absolute(int)`.

  Throws:
    `SQLException`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2006-2013 Apache Software Foundation. All Rights Reserved.