2012-01-31 1 views
1

В настоящее время я работаю над простым составлением бюджета как личным проектом. Он построен на базе Zend Framework и использует архитектуру MVC и шаблон отображения данных. Контроллеры хранят и принимают объекты модели домена через картотекторов данных и передают их в представление. Карты данных выполняют подготовленные операторы через адаптер Zend Db.Lazy-loading коллекции в zend framework

Модель домена состоит из пользователей, у которых много транзакций и много категорий бюджета. Каждая транзакция может быть присвоена категории.

архитектура работает достаточно хорошо для простых операций CRUD, но имеет несколько серьезных недостатков:

  • Прежде всего спектакля. Пользовательский объект создается для каждого запроса, и он автоматически выводит все бюджетные категории для этого пользователя из базы данных. Они, в свою очередь, вытаскивают записи своей дочерней транзакции из базы данных. Это явно неэффективно.
  • Во-вторых, в контроллерах имеется много кода при работе с несколькими объектами модели или подмножеством сущностей, такими как набор транзакций за определенный период времени. Я не уверен, куда положить этот код.

Lazy-loading кажется очевидным решением проблемы производительности. Но я не уверен в том, как реализовать это с помощью карты данных и с коллекциями объектов. В частности, как должна работать ленивая загрузка, когда клиентский код запрашивает только подмножество коллекции?

ответ

0

Я не могу помочь, но Padrig Brady может.
Lazy loading Domain Objects
Ознакомьтесь с разделами 9.6.4 и 9.6.5 «Выживание дезактивации». Он точно объясняет, что вы просите.

+0

Я не думаю, что идея в этой книге является лучшей. Внедрение 'AuthorMapper' в объект' User' не кажется хорошей идеей. – Optimus

+0

@boosis, возможно, выбранная им реализация не подходит для вашего приложения, но методы, которые он описывает, должны служить основой для исправления проблем, которые вы чувствуете. – RockyFord

+0

@RockyFord Спасибо. Я прочитал главу «Модели», но в ней не упоминается, как обрабатывать коллекции, и конкретно, как добавлять условия при ленивой загрузке. – James

Смежные вопросы