Имеется схема БД (Упрощаю) в которой есть две таблицы назовем их Накладная и Товары_Накладной. На клиенте (JavaFX) у меня два TableView Master и Detail.
В таблице Master выводятся записи таблицы Накладные, при нажатии на запись этого TableView в Detail должны выводиться записи из таблицы Товары_Накладной.
Собственно все работает но, если не закрывать сессию, а на просторах интернета все рекомендуют закрывать сессию сразу как только завершена работа, а так как Lazy initialization никто не отменял то при закрытой сессии получаю LazyInitializationException, что ожидаемо.
Варианты решения:
1) Выкачивать все сразу (FetchType=EAGER). - Не подходит по причине большого объема данных которые придется грузить,а с учетом того что пользователь не обязательно(читай как "никогда") не будет просматривать все подряд записи то часть данных по просту не нужна, и присутствует автообновление которое при каждом обновлении приложения будет "вешать" его на 5-7 секунд при учете адекватного интернета.
2) Не закрывать сессию. - Возникают определенные вопросы касательно такого подхода, такие как например актуальность данных или опять же возрастающий объем сессии при каждом загруженом объекте.
3) Открывать каждый раз сессию после клика по записи таблицы Master. - Сейчас так, но при каждом закрытии сессии теряются данные о всех объектах на которые нет ссылок (объекты таблицы Detail не показываемые потому что в Master выбрана другая строка)
В связи с этим вопрос, есть ли какой то способ кешировать загруженные данные на определенный срок, так как довольно часто пользователь будет "прыгать" между двумя-тремя записями таблицы Master?
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники