2014-11-06 31 views
0

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

我不知道这是否正常,但问题是DAO类变得很大,在一些已经有超过30个方法,其中每个代表一个查询或业务规则。

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

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

+0

@tereško我的应用程序的数据库实际上是一个小的遗产,因为我们开始用PHP构建应用程序的一些多年前。无论哪种方式,我们的应用程序也非常庞大,因为您的业务线非常大,将其与ERP进行比较。 – mayconfsbrito 2014-11-06 11:34:37

回答

0

如果不查看代码和查询的类型,这很难说。

另一个我喜欢DAO方法的方法是每个查询都有一个类,这应该允许你在这些查询上有一些行为,最终可以减少你得到的类的数量。当然,在最糟糕的情况下,如果您有500个查询,您将以500个新课程结束,这可能不太理想。

从经验来看,这500个查询中有很多是共同的,相同的查询,但额外的参数,相同的查询,但分页等。如果这符合你的情况,你可以让你的查询成为一个生成器来重用大部分代码。你也可以将某些共同的东西到基本查询类等

另一个优点是,当你需要添加新的查询,你只要不断添加类,不需要触摸你已经大和单片的DAO

看到这个问题,我问前一段时间,是C#,但相同的概念应结转到PHP:Modeling NHibernate queries