用户
 找回密码
 入住 CI 中国社区
搜索
123
返回列表 发新帖
楼主: 沧蓝
收起左侧

[数据库] [讨论/分享] 关于ORM (Object Relational Mapper)

[复制链接]
发表于 2010-6-24 15:32:16 | 显示全部楼层
本帖最后由 www.99n9.com 于 2010-6-24 15:35 编辑

首先!用ORM即对象关系映射,在错综复杂的数据关系中也减少了复杂的逻辑分析与处理,因为你之前已经把对应关系映射过了,你不用再去考虑这么多条数据是怎么对应的,这样能提高开发效率,同时减少程序出错机率.

其次,框架是程序架构,而ORM则是产品信息关系,所以只要表中的所有信息通过ORM关联上成了一个对象,剩下的事就只有调用这个对象并显示出来.否则,你得调数据并组织它们的关系最后显示.

最后,不同产品有不同的信息关系,但一个产品却有固定的信息关系,除非产品模式发生改变.

举例:一件商品有唯一的发布布,两个信息又在不同的表中,这时通过ORM我们在列出这个商品信息的同时还能列出其发布者的信息,而代码大致如下: $商品->名称  $商品->用户->姓名;
上面是简单的关系而已,复杂的如有多个商品,其中一个是我的,这些商品有购买者,当然有一个是我的客户,要我列出我这客户所卖的商品是哪个,没ORM时,必须先找到我那个商品,然后再查询买这商品的人,再查属于这个人的商品,这一连串的查询,你也许会用多个联合查询,代码就不用说了;但有了ORM就变得简单了,$我->商品->购买者->商品;就这样.当然还可以更复杂的下去,$我->商品->购买者->商品->购买者->商品->购买者->商品……。烦杂的东西这么一行是不是很爽.
这个例子现实中可能不会出现,但上面只是两表关系而已,现实中会有很多个表,多表关系将变得更复杂,这时候你会爱上ORM的.

刚学点东西,让大家见笑了.

评分

参与人数 1威望 +1 收起 理由
djks + 1 非常受用!

查看全部评分

发表于 2010-6-27 21:47:58 | 显示全部楼层
简单谈谈俺的粗浅看法。
有天有个朋友问我,能不能用asp.net写出来个淘宝?我说当然可以了,如果愿意而且不需要考虑程序执行效率,用asp也可以写。
问题就在这里。一般性开发,用asp可以、php可以、asp.net可以,jsp也可以。但如果大型开发,就不能不考虑除程序本身之外的其他东西,比如效率问题。
由于php定位在“解释执行”,就算加上zend optimizer,也不可能快过java和C#。因为java和C#可以编译成机器码,而php不可以。我个人认为这就是一个大型项目不可能都用php的主要原因。当然,php也有它的优势,否则它早也就退出了舞台,如asp。
ORM与否,不是问题的关键,当然减轻开发负担,加快开发效率在一定范围是可以追求和考虑的。个人之所以选择CI,是因为它的“小”和“轻”。对比java里的框架,我对php框架的看法是:满足基本即可。
发表于 2010-7-4 08:18:08 | 显示全部楼层
从数据库中决定对象的确是会很方便,但数据库有时候负荷很大,程序上要决定对象就需要对数据库进行一次读取操作。从性能效果,应该在必要时才与数据库打交道。

我有个建议,针对ORM功能可以在后台做一个数据库对象管理器,就像phpmyadmin一样添加字段。但对象管理器在添加字段的同时会为ORM添加对象配置,这样就十分直观,不用二次添加操作。可以用作开发期的协助工具。
发表于 2012-9-16 18:35:35 | 显示全部楼层
很少看到有这么精彩的帖子和评论了,使我对php是否使用ORM有了更加好的理解

本版积分规则