Я здесь для небольшого совета. Я использую Hibernate с Java. Я реализовал интерфейс контроллера, чтобы отделить интерфейс пользователя от фактического взаимодействия с базой данных. Для данного интерфейса я реализовал класс контроллера базы данных, который осуществляет фактическое взаимодействие. Это подается на пользовательский интерфейс фабрикой статического контроллера.
Теперь я обнаружил, что Hibernate на самом деле не загружает все, что я хочу, в память. Для каждого вызова метода контроллера я всегда открываю сессию, делаю свое дело, закрываю сессию. Поэтому, когда я пытаюсь получить доступ к моей структуре объекта, мне выдается ошибка, что
could not initialize proxy - no Session
Без особых усилий и поиска в Google я пришел к выводу, что объект, на который ссылается мой активный объект, отсутствует в памяти.
Теперь у меня есть возможность оставить сеанс открытым с момента, когда я начну использовать свои объекты до конца. Но это кажется немного избыточным и энергоэффективным. Полагаю, я не потеряю много, если оставлю сеанс открытым, но я как бы намеревался не допустить, чтобы пользовательский интерфейс был полностью недоступен для бизнеса с базами данных. Наличие в моем интерфейсе контроллера метода «tearDown» (и «setUp») для пользовательского интерфейса немного противоречит данной логике.