用感觉这个词 说明我还是不太懂
不过感觉这个机制可以提升开发效率
o(object) r(relation)
m(mapping) 对象关系映射
简单的说 就是 把数据库结构 映射到 对象里面 例如:
talbe:student
key:id ,name ,sex
通过orm 以后 会生成一个 student对象
对象的简化描述为:
属性:id ,name ,sex
方法:setid setname setsex ,getid
getname getsex save getAll delete
可以想象 有这么个机制存在 繁琐的数据库操作简化为 简单的 一两行代码 开发效率的提升
可想而知
但是在效率上来说 ,开发效率 和执行效率 是反比的 要开发效率 就要牺牲 部分的 执行效率 不过
个人感觉这也是值得的
你想,一个简单的系统用这个机制的话 因为是简单系统 我想系统开支也不大 加上比如一句插入操作就需要$object->save();
这么简单 而一个复杂的系统 本身 就需要 高的可维护性 和
可扩展性 如果用一般的sql方法的话维护起来有多麻烦 修改一个字段
可能好多地方都需要修改 而orm 如果是自动映射的话
根本可以省了这一步骤 如果是用配置文件来映射的话 也
只需要改下配置文件就可以了 。
关于orm的映射的实现 其实上面也提到了 不外胡两种
自动映射 利用配置文件映射 各有各的好处 ,可能根本上来说
还是 执行效率和 开发效率上的区别,个人倾向于自动
。要自动就全自动 搞的半自动 感觉不够爽快
具体的实现上 我想可能也有区分 有的是 生成class文件 有的是动态生成 两者我想也差不多是上面说的区别吧
下面我们模拟简单的实现过程
实现的时候首先需要:
数据接口$dbObj
配置文件$ormConfig
基础映射类$ormBase
映射类$ormObj extends
ormBase
然后$orm=new ormObj($dbObj,$ormConfig);
$orm->create('classname');
生成了 $classname 对象 这是动态的生成 如果是静态的生成 那就还需要由文件里面通过类来生成,生成的时候 可以考虑用工厂模式
比如用orm_factory($classname,$table);
生成以后 最好用 单件模式 /或者注册模式到全局 $single_global['classname'] =&$classname;
其他也类似这样的 当然如果是动态的 就要 用到一个
生成一个 而且结束的时候 记得销毁 以节省资源
然后你在用到的 地方只需调用$single_global['classname']; 就可以了。
include('orm.php');
$student=&orm_factory('student','student');
$rows=$student->getAll(array(id,name,sex),0,50);
............................
?>
这里的 记录集合可以用activate record 或者简单的数组
这样在整个 操作过程中,你就不需要在为sql 头疼了。