Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ORM/DAO/DataMapper/ActiveRecord/TableGateway的区别?_Php_Database_Orm_Activerecord_Dao - Fatal编程技术网

Php ORM/DAO/DataMapper/ActiveRecord/TableGateway的区别?

Php ORM/DAO/DataMapper/ActiveRecord/TableGateway的区别?,php,database,orm,activerecord,dao,Php,Database,Orm,Activerecord,Dao,请您解释一下以下数据库代表(比如PHP)之间的区别: 奥姆 刀 数据映射器 活动记录 桌面网关 任何例子都将不胜感激。这将需要一个很长的答案。我没有在我面前更详细地重复别人说过的话,而是将您链接到一些相关页面。我建议你仔细看看。也许可以点击一些额外的链接。维基百科总是一个好的开始。如果您在浏览链接后仍然对其中一种或另一种模式有任何疑问,请随时返回SO并再次询问。但如果你这样做了,试着缩小范围。问多个问题并专注于特定方面比期待别人为你写一篇文章要好 计算机软件中的对象关系映射(ORM、O/RM和

请您解释一下以下数据库代表(比如PHP)之间的区别:

奥姆 刀 数据映射器 活动记录 桌面网关


任何例子都将不胜感激。

这将需要一个很长的答案。我没有在我面前更详细地重复别人说过的话,而是将您链接到一些相关页面。我建议你仔细看看。也许可以点击一些额外的链接。维基百科总是一个好的开始。如果您在浏览链接后仍然对其中一种或另一种模式有任何疑问,请随时返回SO并再次询问。但如果你这样做了,试着缩小范围。问多个问题并专注于特定方面比期待别人为你写一篇文章要好

计算机软件中的对象关系映射(ORM、O/RM和O/R映射)是一种编程技术,用于在关系数据库和面向对象编程语言中的不兼容类型系统之间转换数据

使用数据访问对象(DAO)来抽象和封装对数据源的所有访问。DAO管理与数据源的连接以获取和存储数据

一层映射器(473),它在对象和数据库之间移动数据,同时使它们彼此独立,并使映射器本身独立

在数据库表或视图中封装行、封装数据库访问并在该数据上添加域逻辑的对象

充当数据库表的网关(466)的对象。一个实例处理表中的所有行


我觉得TableDataGateway和DataMapper基本上是相同的模式。它们都将域对象与查询分开,并且都需要一种将对象的数据映射到数据库的方法。我看到的唯一区别是,TableDataGateway需要显式地注入每个字段,而DataMapper可以接受对象并自行处理映射。是否正确?@AgmLauncher No.TableDataGateways处理行,而不是域对象。也就是说,TableDataGateways返回数据库中记录的1:1表示形式。只有当你开始将这些映射到一个独立结构的域对象时,你才能得到一个数据映射器。我明白了,所以它们不是互斥的模式,TDG的级别似乎比DM稍低,如果需要的话,DM可以使用一个(或多个?)TDG。对吗?@Gordon根据TableDataGateway处理表,而RowDataGateway处理行。@IntelliData嗯,不知道你想告诉我什么?您确实意识到,我正在链接到您链接的页面上的模式,并且这些描述是从相应的模式页面中引用的,是否与以下内容相关: