Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.
Наука · 12 августа 2026 г.
💡Сегодня покажу крутую фишку для оптимизации чтения больших коллекций из базы через JPA. — 12 августа 2026 г. в 09:05:24.514
💡Сегодня покажу крутую фишку для оптимизации чтения больших коллекций из базы через JPA. 📌 Проблема: Когда загружаем большую коллекцию через @OneToMany, Hibernate часто делает это лениво (LAZY), но при первом доступе — забирает всю коллекцию целиком. Это может привести к OutOfMemoryError или резкому проседанию производительности. 📌 Решение: использовать пагинацию (batch-size) или запрос коллекции порциями. Как настроить batch-size на уровне сущности: @Entity public class User { @OneToMany(mappedBy = "user", fetch = FetchType.LAZY) @BatchSize(size = 50) private List<Order> orders; } 🧠 Теперь Hibernate будет загружать за раз по 50 элементов, а не всю коллекцию сразу! 📌 Или можно настроить глобально через application.properties: spring.jpa.properties.hibernate.default_batch_fetch_size=50 ⚠️ Важно: - @BatchSize работает только для LAZY-связей. - Это не пагинация в SQL, а оптимизация внутренних запросов Hibernate. - Если коллекция огромная (100k+ записей) — лучше делать явные paged запросы в репозитории. 💡Помните: без настройки batch-size Hibernate может сломать приложение под нагрузкой. Оптимизируйте загрузку коллекций заранее! 👉 @BookJava

