2012-01-31 72 views
1

我目前正在将简单的预算应用程序作为个人项目进行工作。它基于Zend Framework构建,并使用MVC体系结构和数据映射器模式。控制器通过数据映射器存储和接收域模型实体,并将它们传递给视图。数据映射器通过Zend Db Adapter执行预处理语句。在zend框架中延迟加载集合

域模型由用户组成,用户有许多交易和许多预算类别。每笔交易都可以分配给一个类别。

的建筑作品不够好简单的CRUD操作,但有几个严重的缺点的:

所有性能的
  • 第一。每个请求都实例化一个用户对象,数据映射器会自动从数据库中提取该用户的所有预算类别。这些反过来从数据库中提取其子交易记录。这显然是低效的。其次,在处理多个模型实体或实体的子集时,控制器中有很多代码,例如某个时间段内的一组事务。我不确定该把代码放在哪里。

延迟加载似乎是性能问题的明显解决方案。但我不确定如何用数据映射器和对象集合来实现这一点。特别是,当客户端代码只请求一个集合的子集时,应该如何延迟加载?

回答

0

我不能帮助,但帕德里布雷迪可以。
Lazy loading Domain Objects
查阅章节9.6.4和9.6.5中的生存依存。他解释你到底在问什么。

+0

我不认为这本书的想法是最好的。向'User'实体注入'AuthorMapper'似乎不是一个好主意。 – Optimus 2012-01-31 14:59:25

+0

@boosis或许他选择的实施并不适合您的应用,但他所描述的技术应该为纠正您感觉到的问题提供基础。 – RockyFord 2012-02-01 03:59:48

+0

@RockyFord谢谢。我已经阅读了Models的一章,但没有提到如何处理集合,特别是如何在延迟加载时添加条件。 – James 2012-02-01 16:04:35