Вы можете использовать размер пакета для более эффективного извлечения детей.
<bag name="Childen" batch-size="20" ...>
Дочерние объекты по-прежнему загружаются отдельными запросами (вы не должны больше их объединять в запросе), но всегда 20 одновременно. Превращает «N + 1» в «N / 20 + 1», что обычно очень хорошо. Преимущество этого решения в том, что вам не нужно заботиться о своих запросах.
Вы также можете загружать родителей партиями:
<class name="Enterprise" batch-size="20">
По возможности загружает отношения "один к одному" с предприятиями в пакетах.
Если вам нужна дополнительная оптимизация, попробуйте добавить ссылку на корень (самый верхний родительский элемент). Затем вы можете загрузить все дочерние элементы корня в одном простом запросе. Недостатком является то, что вам нужно заботиться об этом справочнике, это избыточность, которую также сложно поддерживать.