2012-07-11 4 views
2

Мне было интересно, есть ли способ для ленивых объектов с db4o? Я прочитал весь учебник, и кажется, что этой функции не существует.Lazy-loading 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, чтобы полностью активировать объект или просто активировать определенные поля объекта в зависимости от моих потребностей.

ответ

0

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

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

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

Лучшее