クラス JpaPagingItemReader<T>

実装されたすべてのインターフェース:
ItemReader<T>ItemStreamItemStreamReader<T>org.springframework.beans.factory.InitializingBean

public class JpaPagingItemReader<T> extends AbstractPagingItemReader<T>

JPA 上に構築されたデータベースレコードを読み取るための ItemReader

JPQL setQueryString(String) を実行して、リクエストされたデータを取得します。AbstractPagingItemReader.setPageSize(int) で指定されたサイズのページングされたリクエストを使用して、クエリが実行されます。AbstractItemCountingItemStreamItemReader.read() メソッドが呼び出され、現在の位置に対応するオブジェクトを返すときに、必要に応じて追加のページがリクエストされます。

ページングのパフォーマンスは、JPA の実装と、返される行の数を制限するデータベース固有の機能の使用に依存します。

かなり大きなページサイズを設定し、ページサイズに一致するコミット間隔を使用すると、パフォーマンスが向上します。

大きな結果のメモリ使用量を削減するために、各ページの読み取り後に永続コンテキストがフラッシュされ、クリアされます。これにより、読み取られたすべてのエンティティが切り離されます。エンティティに変更を加え、変更を永続化する場合は、エンティティを明示的にマージする必要があります。

リーダーは EntityManagerFactory で構成する必要があります。すべてのエンティティアクセスは、既存の Spring 管理トランザクションとは無関係に、新しいトランザクション内で実行されます。

実装は AbstractItemCountingItemStreamItemReader.open(ExecutionContext) の呼び出し間でスレッドセーフですが、マルチスレッドクライアントで使用する場合は saveState=false を使用することを忘れないでください(再起動は利用できません)。

導入:
2.0
作成者:
Thomas Risberg, Dave Syer, Will Schipp, Mahmoud Ben Hassine
  • コンストラクターの詳細

    • JpaPagingItemReader

      public JpaPagingItemReader()
  • メソッドの詳細

    • setEntityManagerFactory

      public void setEntityManagerFactory(jakarta.persistence.EntityManagerFactory entityManagerFactory)
    • setParameterValues

      public void setParameterValues(MapSE<StringSE,ObjectSE> parameterValues)
      クエリの実行に使用されるパラメーター値。
      パラメーター:
      parameterValues - クエリ文字列で使用される名前のパラメーターによってキー設定された値。
    • setTransacted

      public void setTransacted(boolean transacted)
      デフォルト(true)では、EntityTransaction が開始され、読み取りの前後でコミットされます。JPA 実装が特定のトランザクションをサポートしていない場合、オーバーライド(false)できます。(例: JTA トランザクションを使用した Hibernate)。注: EntityManagerFactory でオブジェクトの一貫性を保証する際に問題が発生する場合があります。
      パラメーター:
      transacted - インジケータ
    • afterPropertiesSet

      public void afterPropertiesSet() throws ExceptionSE
      クラスからコピーされた説明: AbstractPagingItemReader
      必須プロパティを確認してください。
      次で指定:
      インターフェース org.springframework.beans.factory.InitializingBeanafterPropertiesSet 
      オーバーライド:
      クラス AbstractPagingItemReader<T>afterPropertiesSet 
      例外:
      ExceptionSE
      関連事項:
      • InitializingBean.afterPropertiesSet()
    • setQueryString

      public void setQueryString(StringSE queryString)
      パラメーター:
      queryString - JPQL クエリ文字列
    • setQueryProvider

      public void setQueryProvider(JpaQueryProvider queryProvider)
      パラメーター:
      queryProvider - JPA クエリプロバイダー
    • doOpen

      protected void doOpen() throws ExceptionSE
      クラスからコピーされた説明: AbstractItemCountingItemStreamItemReader
      入力の読み取りを開始するために必要なリソースを開きます。
      オーバーライド:
      クラス AbstractPagingItemReader<T>doOpen 
      例外:
      ExceptionSE - サブクラスがフレームワークによる解釈のためにチェック済み例外をスローできるようにします
    • doReadPage

      protected void doReadPage()
      次で指定:
      クラス AbstractPagingItemReader<T>doReadPage 
    • doClose

      protected void doClose() throws ExceptionSE
      クラスからコピーされた説明: AbstractItemCountingItemStreamItemReader
      AbstractItemCountingItemStreamItemReader.doOpen() で開いたリソースを閉じます。
      オーバーライド:
      クラス AbstractPagingItemReader<T>doClose 
      例外:
      ExceptionSE - サブクラスがフレームワークによる解釈のためにチェック済み例外をスローできるようにします