1

如果我错了,请纠正我:

如果我们使用 Dao/Vo 模式或 TDG 模式,我们将拥有一个很好的代码组织,为每个(或至少为很多)表提供一个相关的类。

这种方法的问题是数据没有在给定的表内关闭。我们有一些特定领域的数据,比如findDogBreed();or findBookBestSellerAuthor();,上面的模式似乎不能很好地处理这个问题。

一旦解决方案是使用映射器。映射器将包含一组与一个表相关的方法和属性,但它们不会仅对该表关闭,也不会与特定的 SQL 模式相关。

问题是,如果我们开始抽象所有这些东西,我们将无法访问 SQL 语法。如果我们需要我们的数据库管理员来处理它怎么办?在更复杂的查询中,使用映射器可能会导致非常混乱的抽象“事物”。

它是否正确 ?如果是这样,我想知道我们有什么途径可以在这里找到一个中间词。

4

1 回答 1

1

当您抽象功能时,您不必失去手动编写 SQL 的选项,即使在多层次抽象上也是如此。

例如,看看 Doctrine,它是受 Hibernate 启发的 PHP 的 ORM。它允许您使用 DQL(Doctrine Query Language)编写查询,该查询可转换为 SQL 并自动映射您的实体,但您也可以编写本机 SQL(通常用于性能优化),但您需要自己定义结果映射。

于 2011-05-06T13:34:54.843 回答