@Repository
public interface PostRepository extends BaseJpaRepository<Post, Long> {
@Query("""
select p
from Post p
where date(p.createdOn) >= :sinceDate
"""
)
@QueryHints(
@QueryHint(name = AvailableHints.HINT_FETCH_SIZE, value = "25")
)
Stream<Post> streamByCreatedOnSince(@Param("sinceDate") LocalDate sinceDate);
}
The FETCH_SIZE JPA query hint is necessary for PostgreSQL and MySQL to instruct the JDBC Driver to prefetch at most 25 records. Otherwise, the PostgreSQL and MySQL JDBC Drivers would prefetch all the query results prior to traversing the underlying ResultSet.
Switching the stream from parallel() to sequential() worked in the initial Stream API design, but caused many problems and finally the implementation was changed, so it just turns the parallel flag on and off for the whole pipeline. The current documentation is indeed vague, but it was improved in Java-9:
The stream pipeline is executed sequentially or in parallel depending on the mode of the stream on which the terminal operation is invoked. The sequential or parallel mode of a stream can be determined with the BaseStream.isParallel() method, and the stream's mode can be modified with the BaseStream.sequential() and BaseStream.parallel() operations. The most recent sequential or parallel mode setting applies to the execution of the entire stream pipeline.
A. Shukla, T. Sharma, and Y. Simmhan. Workshop on Architectural Support and Middleware for InfoSymbiotics/ Dynamic Data Driven Applications Systems (DDDAS), co-located with High Performance Computing Conference (HiPC), page 61. (2015)Extended abstract.
K. Joseph, P. Landwehr, and K. Carley. Social Computing, Behavioral-Cultural Modeling and Prediction, page 75--83. Cham, Springer International Publishing, (2014)
M. Strohbach, A. Wiesmaier, and A. Mittelbach. Big Stream Processing Systems (Dagstuhl Seminar 17441), volume 7 of Dagstuhl Seminar, chapter Overview of Talks, Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, (2018)
G. Krempl, and V. Hofer. Proceedings of the Symposium Learning, Knowledge, Adaptation (LWA 2011) of the GI Special Interest Groups KDML, IR and WM., page 65--72. (September 2011)
G. Krempl, I. Zliobaite, Y. Wang, and G. Forman (Eds.) Online, Magdeburg University, (2013)Workshop at the European Conference on Machine Learning and Principles and Practice of Knowledge Discovery in Databases, ECMLPKDD 2013..
J. Lin, E. Keogh, S. Lonardi, and B. Chiu. Proceedings of the 8th ACM SIGMOD Workshop on Research Issues in Data Mining and Knowledge Discovery, page 2--11. New York, NY, USA, ACM, (2003)
R. Akbarinia, and F. Masseglia. Machine Learning and Knowledge Discovery in Databases, volume 8188 of Lecture Notes in Computer Science, Springer Berlin Heidelberg, (2013)
F. Morstatter, J. Pfeffer, H. Liu, and K. Carley. Proceedings of the Seventh International AAAI Conference on Weblogs and Social Media, page 400--408. The AAAI Press, (2013)
S. Papadimitriou, J. Sun, and C. Faloutsos. Proceedings of the 31st international conference on Very large data bases, page 697--708. VLDB Endowment, (2005)
T. Nguyen, and W. Siberski. in Proceedings of the second International Workshop on Ordering, Reasoning, co-located with the 12th International Semantic Web Conference (ISWC 2013), Vol-1059, page 43-54. CEUR Workshop Proceedings, (2013)