Hibernate Pagination: Why Offset Kills Performance and How to Fix It
Offset-based pagination with Hibernate's setFirstResult degrades superlinearly. Cursor-based pagination using a monotonic unique ID and setMaxResults delivers constant-time page loads. Here's how to implement it in JPQL and why it works in Hibernate 5.x and 6.x.