Есть ли чистый способ заставить Hibernate работать с отложенной инициализацией в Swing?

#java #hibernate #swing #lazy-loading

#java #hibernate #swing #отложенная загрузка

Вопрос:

Вот описание того, что я хочу сделать в приложении Swing.

Итак, представьте, что у меня есть объектный клиент, внутри которого есть несколько коллекций. При запуске приложения я хочу загрузить только object Client и отобразить его основные атрибуты (например, имя, возраст и т.д.) В таблице. Позже, когда пользователь захочет, я хочу загрузить полный клиент (коллекции).

Когда я попытался использовать Hibernate для отложенной загрузки клиента, у меня возникли некоторые проблемы из-за попытки загрузить эти объекты вне исходного сеанса, который загружал клиент.

Я искал в Интернете чистый / простой способ сделать это, но в итоге я сделал взлом, которым я не очень горжусь: в основном я реорганизовал базовые атрибуты клиента и создал класс ClientDetails. В клиенте у меня теперь есть ClientDetails. Итак, при запуске я загружаю только ClientDetails, а затем при необходимости загружаю Client, который снова загрузит ClientDetails. Это заставит меня обновить ссылку на исходные ClientDetails, которые были загружены в первый раз (это неаккуратно).

Итак, мой вопрос, есть ли лучший / более чистый способ сделать это с помощью отложенной загрузки?

Надеюсь, это не было слишком запутанным 🙂

Спасибо!

Ответ №1:

Вы должны загрузить Client объект, закрыть Session тот, который его загрузил, а затем, когда вы захотите отобразить коллекцию, откройте другой Session и повторно прикрепите к нему Client объект.

Комментарии:

1. Привет. Прежде всего, спасибо за ваш ответ. Не могли бы вы, пожалуйста, пояснить, что вы подразумеваете под «повторно подключить к нему клиентский объект»?

2. Пожалуйста, смотрите docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/… и docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/…