私はJPAを初めて使用し、結果セットからデータをストリーミングできるかどうかを知りたいのですが、たとえば、最初の結果の処理を開始するためにクエリが実行されるのを待ちたくないということです。バッチの。
JPA APIまたはコミュニティが採用した回避策を使用する可能性はありますか?最終的にJPA実装の機能を使用しますか?
私はJPAを初めて使用し、結果セットからデータをストリーミングできるかどうかを知りたいのですが、たとえば、最初の結果の処理を開始するためにクエリが実行されるのを待ちたくないということです。バッチの。
JPA APIまたはコミュニティが採用した回避策を使用する可能性はありますか?最終的にJPA実装の機能を使用しますか?
@ javax.persistence.PostLoadアノテーションの実行可能なオプションを使用していますか?このようにして、特定のオブジェクトがデータストアから作成された瞬間にアクションをフックすることができます。これがまさにあなたが探しているものであるかどうかはわかりません。
明らかな理由により、結果セットで何かを実行する前に、「マスター」選択を終了する必要があります。ここで何を達成しようとしているのかわかりません...おそらく、最初の結果をより速く取得し、処理中に詳細を取得するために、いくつかのフィールドを遅延させる必要がありますか?
JPAで実際のストリームを使用できます。
public interface UserRepository extends JpaRepository<User, Integer> {
// ...
Stream<User> findAllByName(String name);
// ...
}
この素敵な記事でより多くの例を見つけることができます。
現在、データをストリーミングするメソッドがありますが、デフォルトの実装はストリームにラップするだけjavax.persistence.TypedQuery
です(したがって、とにかくすべてのデータをメモリにロードします)。ただし、Hibernateはこの動作を実際のストリーミングでオーバーライドします。getResultStream()
getResultList()