压缩DAO层的类

时间:2014-11-06 11:03:12

标签: php design-patterns orm doctrine

我正在使用MVC应用程序,它可以被认为是大型或中型,它涉及MYSQL上的数百个功能和400个表。作为ORM工具,我们通过依赖注入Doctrine采用,并且还采用DAO(数据访问对象)模式来存储每个Entity类的查询,换句话说,每个表都有一个Entity类,每个Entity类都有一个DAO类。

我不知道这是否正常,但问题是DAO类变得越来越大,有些已经有30多种方法,每种方法都代表一个查询或业务规则。

我们正在尝试更普遍地创建方法和参数化方式,此外,所有DAO类都是AbstractDAO类的子类,它已经实现并提供了插入,更新,查找,列表等通用方法。

你对我建议的是什么?一些技术,模式或工具,试图更多地压缩我的代码,或者至少更好地组织它?

1 个答案:

答案 0 :(得分:0)

如果不查看代码和您正在进行的查询,很难说。

另一种我喜欢DAO方法的方法是每个查询都有一个类,这应该允许你对那些可以减少最终获得的类数的查询有一些行为。当然,在最糟糕的情况下,如果您有500个查询,那么最终会有500个新类,这可能远非理想。

根据经验,这500个查询中的许多都有许多共同点,相同的查询但是额外的参数,相同的查询但是分页等。如果这符合您的情况,您可以使您的查询成为构建者重用大部分代码。您还可以将某些常见内容移动到基本查询类等。

另一个优点是,当您需要添加新查询时,您只需继续添加类,而不需要触摸已经很大的单片DAO

看到我前段时间问过的这个问题,是针对c#但是同样的概念应该转移到php:Modeling NHibernate queries