Ленивая загрузка с db4o

Мне было интересно, есть ли способ ленивой загрузки объектов с db4o? Я прочитал весь учебник, и кажется, что эта функциональность не существует.

Давайте проясним мою точку зрения. Например, допустим, у меня есть объект House с 50 сложными полями.

House
 1) location : Country (complex object)
 2) window : Window (complex object)
 3) livingRoom : Room (complex object)
   .
   .
   .
 50) door : Door (complex object).

Допустим, в определенном месте моей программы мне нужно только местоположение дома. Если я включаю механизм прозрачной активации db4o, когда я получаю доступ к полю местоположения, активируется весь объект дома, что означает, что все поля заполнены значениями. Это глупо, потому что все другие большие и сложные поля (которые я не буду использовать в этом случае) извлекаются из базы данных бесполезно и дорого.

Было бы хорошо, если бы у меня был способ сказать db4o либо полностью активировать объект, либо просто активировать определенные поля объекта в зависимости от моих потребностей.

1 ответ

Если я правильно вас понял, прозрачной активации db4o должно быть достаточно, чтобы выполнить то, что вы хотите, при условии, что все ваши "подчиненные объекты" также реализуют интерфейс Activatable (и, конечно, вы добавили TransparentActivationSupport в конфигурацию).

Таким образом, в вашем примере, когда дом активируется, все его поля станут ненулевыми, но не будут активированы; только когда вы получите доступ к этим полям, они должны активироваться.

Можете ли вы опубликовать код (или простой тест), который заставит вас поверить, что все ваши объекты активируются?

Лучший

Другие вопросы по тегам