Как работает pagination в Spring Data и что такое Slice vs Page?

Middle
279 просмотров
AFK Offer AI

Pageable pageable = PageRequest.of(0, 20, Sort.by("createdAt").descending()). Page page = repo.findAll(pageable) — выполняет COUNT запрос для total elements + data запрос. Slice — только data запрос, знает есть ли следующая страница (hasNext) но не total count. Slice быстрее для infinite scroll где total не нужен. Проблема с OFFSET: при большом offset БД всё равно читает все предыдущие строки. Cursor-based pagination (by ID или timestamp) эффективнее для больших таблиц.

Следующий вопрос

Что такое BlockingQueue и какие реализации есть?