クラス JpaPagingItemReader<T>
- 実装されたすべてのインターフェース:
ItemReader<T>
、ItemStream
、ItemStreamReader<T>
、org.springframework.beans.factory.InitializingBean
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, Jinwoo Bae
フィールドのサマリー
クラス org.springframework.batch.item.database.AbstractPagingItemReader から継承されたフィールド
logger, results
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明void
必須プロパティを確認してください。protected void
doClose()
AbstractItemCountingItemStreamItemReader.doOpen()
で開いたリソースを閉じます。protected void
doOpen()
入力の読み取りを開始するために必要なリソースを開きます。protected void
void
setEntityManagerFactory
(jakarta.persistence.EntityManagerFactory entityManagerFactory) void
setHintValues
(MapSE<StringSE, ObjectSE> hintValues) JPA クエリのクエリヒント値を設定します。void
setParameterValues
(MapSE<StringSE, ObjectSE> parameterValues) クエリの実行に使用されるパラメーター値。void
setQueryProvider
(JpaQueryProvider queryProvider) void
setQueryString
(StringSE queryString) void
setTransacted
(boolean transacted) デフォルト(true)では、EntityTransaction が開始され、読み取りの前後でコミットされます。クラス org.springframework.batch.item.database.AbstractPagingItemReader から継承されたメソッド
doRead, getPage, getPageSize, jumpToItem, setPageSize
クラス org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader から継承されたメソッド
close, getCurrentItemCount, isSaveState, open, read, setCurrentItemCount, setMaxItemCount, setSaveState, update
クラス org.springframework.batch.item.ItemStreamSupport から継承されたメソッド
getExecutionContextKey, getName, setExecutionContextName, setName
コンストラクターの詳細
JpaPagingItemReader
public JpaPagingItemReader()
メソッドの詳細
setEntityManagerFactory
public void setEntityManagerFactory(jakarta.persistence.EntityManagerFactory entityManagerFactory) setParameterValues
クエリの実行に使用されるパラメーター値。- パラメーター:
parameterValues
- クエリ文字列で使用される名前のパラメーターによってキー設定された値。
setHintValues
JPA クエリのクエリヒント値を設定します。クエリヒントを使用して、JPA プロバイダーに指示を与えることができます。- パラメーター:
hintValues
- 各キーがヒントの名前で、対応する値がヒントの値であるマップ。- 導入:
- 5.2
setTransacted
public void setTransacted(boolean transacted) デフォルト(true)では、EntityTransaction が開始され、読み取りの前後でコミットされます。JPA 実装が特定のトランザクションをサポートしていない場合、オーバーライド(false)できます。(例: JTA トランザクションを使用した Hibernate)。注: EntityManagerFactory でオブジェクトの一貫性を保証する際に問題が発生する場合があります。- パラメーター:
transacted
- インジケータ
afterPropertiesSet
クラスからコピーされた説明:AbstractPagingItemReader
必須プロパティを確認してください。- 次で指定:
- インターフェース
org.springframework.beans.factory.InitializingBean
のafterPropertiesSet
- オーバーライド:
- クラス
AbstractPagingItemReader<T>
のafterPropertiesSet
- 例外:
ExceptionSE
- 関連事項:
InitializingBean.afterPropertiesSet()
setQueryString
- パラメーター:
queryString
- JPQL クエリ文字列
setQueryProvider
- パラメーター:
queryProvider
- JPA クエリプロバイダー
doOpen
クラスからコピーされた説明:AbstractItemCountingItemStreamItemReader
入力の読み取りを開始するために必要なリソースを開きます。- オーバーライド:
- クラス
AbstractPagingItemReader<T>
のdoOpen
- 例外:
ExceptionSE
- サブクラスがフレームワークによる解釈のためにチェック済み例外をスローできるようにします
doReadPage
protected void doReadPage()- 次で指定:
- クラス
AbstractPagingItemReader<T>
のdoReadPage
doClose
クラスからコピーされた説明:AbstractItemCountingItemStreamItemReader
AbstractItemCountingItemStreamItemReader.doOpen()
で開いたリソースを閉じます。- オーバーライド:
- クラス
AbstractPagingItemReader<T>
のdoClose
- 例外:
ExceptionSE
- サブクラスがフレームワークによる解釈のためにチェック済み例外をスローできるようにします