类 JpaPagingItemReader<T>

  • 所有已实现的接口:
    ItemReader<T>, ItemStream, ItemStreamReader<T>, org.springframework.beans.factory.InitializingBean

    public class JpaPagingItemReader<T>
    extends AbstractPagingItemReader<T>

    ItemReader for reading database records built on top of JPA.

    It executes the JPQL setQueryString(String) to retrieve requested data. The query is executed using paged requests of a size specified in AbstractPagingItemReader.setPageSize(int). Additional pages are requested when needed as AbstractItemCountingItemStreamItemReader.read() method is called, returning an object corresponding to current position.

    The performance of the paging depends on the JPA implementation and its use of database specific features to limit the number of returned rows.

    Setting a fairly large page size and using a commit interval that matches the page size should provide better performance.

    In order to reduce the memory usage for large results the persistence context is flushed and cleared after each page is read. This causes any entities read to be detached. If you make changes to the entities and want the changes persisted then you must explicitly merge the entities.

    The reader must be configured with an EntityManagerFactory. All entity access is performed within a new transaction, independent of any existing Spring managed transactions.

    The implementation is thread-safe in between calls to AbstractItemCountingItemStreamItemReader.open(ExecutionContext), but remember to use saveState=false if used in a multi-threaded client (no restart available).

    从以下版本开始:
    2.0
    作者:
    Thomas Risberg, Dave Syer, Will Schipp