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