Это обычная проблема N + 1, Что такое SELECT N + 1? , умноженная.Что касается производительности, трудно сказать: скорее всего, вы потеряете производительность.Но, возможно, нет.
Проблема в том, что, если вы попытаетесь выполнить итерацию по слишком ленивой коллекции, вы получите N + 1 запрос к базе данных: один для всей коллекции, один для каждой сущности.Это может или не может быть хорошим, в зависимости от кэширования и характера ваших данных.
Обновление: здравый смысл предлагает кодировать простейшую вещь (то есть настройки по умолчанию), а затем профилировать под реальным использованием сценариев и выбор реального подхода после получения данных.
Нет никакого реального смысла придерживаться одного конкретного решения заранее.Если вам нужен только один элемент из коллекции, экстра-ленивый поиск выиграет.Может быть.Если вам нужна вся коллекция, очень ленивый поиск повлияет на производительность.То есть, если у вас не весь домен кешируется, в этом случае вам все равно.Обычно.
Что касается Criteria API и явного декларирования, это как бы подрывает цель Hibernate: вы хотите, чтобы ваш бизнес-уровень не заботился (насколько это практически возможно) о отображении деталей.Поэтому, пока вы можете сохранять настройки сопоставления в самих сопоставлениях, лучше делать это.Как всегда, YMMV.