php ORM:(Object/Relation Mapping 对象关系映射) 浅见

 ORM:(Object/Relation Mapping 对象关系映射)
 
  最出名的ORM模型 应该就是 JAVA 的Hibernate了..
 
ORM基本概念:

对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,php利用__set __get __call等方式使用,
这也同时暗示者额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。
更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要比维护手写的方案要少;

 
ORM有什么用?--什么时候用 ?:
  
1. 简化表操作 , ORM提供了所有SQL语句的生成,代码人员远离了数据库概念,程序员更少地去接触到底层的sql,多人开发时可以最大程度地避免误操作
2. 如果一个项目研发时,很多地方须要执行  一对一,一对多的表操作,那就可以试试用ORM模型了,因为 它能简化sql代码,
多对多关系的表操作不建议使用ORM,执行效率会降低
一句话: ORM使我们摆脱了SQL,但并不代表我们不再使用SQL,事实上,复杂的查询和报表我仍然推荐使用SQL
如:
echo $supply->get(5)->Books->classname;
 //自动取得supply和books关联中内容
Q:如果用sql怎么写?
A:先取得$supply中的值,然后再写sql 通过supplyid作为查询条件去取得books中classname
$result=mysql_query(select * from supply where id=5)
$row=mysql_fetch_array($result);
mysql_query(select * from book where supplyid=$row[supplyid]);
$books=mysql_fetch_array($result);
3. 数据库无关性:平滑迁移数据库和异构数据库 (这个貌似没多大用处吧?)
   4. 实体对象的持久性:关系数据库的数据与对象的对应关系。

一个很丧气的观点: 在PHP里使用ORM,它最大用处 只是提高开发效率,让phper少写点Sql语句, 和JAVA里使用Hibernate或的舒适度完全不能比... 
参考资料:
ORM原理-ORM目标及分层 http://www.cnblogs.com/eugenewu0808/archive/2009/01/05/1368680.html
国人写的一个ORM框架  http://code.google.com/p/queryphp/downloads/list
ORM的硬伤: http://www.cnblogs.com/Barton131420/archive/2007/01/07/613955.html
我们为什么使用ORM?  http://www.cnblogs.com/tansm/archive/2006/06/07/419927.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值