当前位置:  开发笔记 > 编程语言 > 正文

如何扩展这个简单的DataMapper?

如何解决《如何扩展这个简单的DataMapper?》经验,为你挑选了1个好方法。

有人可以从以下内容中得出一个具体的例子:

http://www.urdalen.com/blog/?p=210

..这表明如何处理one-to-manymany-to-many关系?

我不久前给作者发了电子邮件,但没有收到回复.我喜欢他的想法,但无法弄清楚如何在简单的单表关系之外实现它.

注意:我不想使用完整的ORM.我喜欢手工做我的SQL.我想改进我的应用程序代码的设计.现在,每个域对象都有自己的类,其中包含用静态方法包装的查询.它们只是返回标量,1d数组(记录)或2d数组(记录集),具体取决于查询.



1> troelskn..:

ORM的问题(阻抗不匹配,正如它所称)恰恰与关系有关.在对象图(内存中对象)中,关系是指向其他对象的指针.在关系数据库中,关系是相反的; 这使得无法在两个模型之间进行简单的映射,这就是ORM如此复杂的原因.

如果你想要靠近数据库(避免使用ORM),那么你就不应该试图去除关系.我编写datamappers的方式如下:

$car42 = $car_gateway->fetch(42);
$wheels = $wheel_gateway->selectByCar($car42);

与ORM方式相反:

$car42 = $car_gateway->fetch(42);
$wheels = $car42->selectWheels();

这意味着网关最终会出现在客户端代码中,但它也会使事情保持透明并且接近数据库.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有