We should explore how we could switch from Criteria Queries to JPQL queries as Hibernate has a much better efficiency running String-based queries:
CriteriaBuilder query
Benchmark Mode Cnt Score Error Units
RepositoryFinderTests.derivedFinderMethod thrpt 5 110633,482 ± 3980,501 ops/s
String-based query
Benchmark Mode Cnt Score Error Units
RepositoryFinderTests.derivedFinderMethod thrpt 5 344518,379 ± 24561,002 ops/s
We should explore how we could switch from Criteria Queries to JPQL queries as Hibernate has a much better efficiency running String-based queries:
We would need to build our own
JpqlQueryBuilderthat mimicsCriteriaBuilderin terms of expressions, predicates and automated inclusion of joins.Collection of related tickets:
NULLSprecedence usingSortfor Criteria Queries #3587JpaSort.unsafe(…)used with Specifications to order-byExpression#3172