Перейти к содержанию

jpa

Ленивые коллекции и прокси в Hibernate

Ленивая загрузка сущностей (fetch = FetchType.LAZY) в Hibernate это не только источник проблем вроде N+1 selects или LazyInitializationException, но и довольно удобный механизм оптимизации производительности. Действительно, зачем запрашивать сразу все связанные данные из БД, если они нам могут не понадобиться. Сами авторы Hibernate считают, что все связи между сущностями должны быть ленивыми.
Но не все знают, что в Hibernate с ленивыми коллекциями и объектами много чего можно сделать не запуская их загрузку из БД. Далее постараемся на примерах рассмотреть какие варианты нам доступны.

Как правильно делать пагинацию на бэкенде?

Пагинацией называется разделение большого массива данных на отдельные страницы для удобства использования. Это может выглядеть как ряд с номерами страниц в результатах поиска на google.com, или как непрерывная лента с постами в любой соцсети. В обоих случаях пагинация нам нужна, потому что мы не можем загрузить в браузер все результаты поиска целиком.