это ваша проблема:
"но я просто не знаю эту структуру и не хочу изучать ее сейчас (я только начинающий)."
Было бы хорошо, если бы все происходило автоматически, и нам даже не нужно было писать код, но, увы, не всегда все хорошо. Не имеет никакого смысла использовать технологию, но не хочется прилагать усилия / учиться использовать ее механизмы.
Есть несколько вариантов.
1) Открыть сеанс в поле зрения. Потратьте время, чтобы сделать это. Это не трудно. Что он делает, так это держит сеанс открытым в течение всего срока действия запроса, поэтому , если вы используете ленивые отношения, сеанс существует и данные могут быть загружены. @ Danny.lesnik неверный ответ - из того, что я прочитал, он подразумевает, что OSiV просто вызывает ассоциации, а это не то, что она делает. Если вы не хотите использовать Spring, вы можете найти пример реализации шаблона OSiV вручную, он не должен быть слишком плохим и, вероятно, хорошим опытом обучения.
2) Напишите пользовательские сопоставления / hql, чтобы загрузить все данные, необходимые для данного сценария. Это не значит загрузить все объекты; Вы можете загрузить определенные поля из таблиц, чтобы сделать выборку максимально возможной. Например, вы можете сделать ваши отображения / аннотации hibernate / jpa ленивыми, а затем написать собственный метод DAO, который выбирает только определенные поля из столбцов между таблицами в объединении. Это может быть очень быстро с некоторыми настройками / кешами / индексами.
Из обоих вариантов 1 проще, вам просто нужно посмотреть документацию, в основном ее конфигурацию. Обратите внимание, что у OSiV есть свои сложности, например, если вы изменяете данные, но есть исключение, представляющее результаты пользователю, и ваши транзакции настраиваются определенным образом, ваша модификация будет откатываться. Преимущество варианта 2 заключается в том, что он не нуждается в OSiV со всеми вытекающими отсюда сложностями, а также дает вам больший контроль над вашим взаимодействием с базой данных и компромисс с необходимостью выполнять больше работы.