|
说起ORM,很多人认为,那是在JAVA中的事,尽管现在有Doctrine,Propel这样优秀的PHP的ORM开源,但很多人还是有抵触情绪。
ORM要生成ORM对象,从这一点而言,肯定会降低程序运行效率。但如果有了ORM,代码将会是什么样子:
比如使用ActiveRecord,代码将会是这样:
$user = new User();
$user->id = 1;
$user->name = 'roga';
$user->gender = 'male';
$user->location = 'sh';
$user->save();
这样的代码实在是清析明了,易维护。
当然,ActiveRecord有相当多的规范约束。这给使用还是带来了相当的不便。因此,选择Doctrine,Propel,也就大有人在。
于是,又有人反对,Doctrine,Propel代码量实在是太多了。再生成对象,肯定降低效率。
近两年,Ruby On Rails中出现了一个插件,叫做:DrySql,这是一种用于ActiveRecord的ORM的插件。但它的思想实在是先进。于是,我不把它当成插件,而是当成完全的全新的ORM方式,移植到了我们自己所用的开发框架中了,于是,我们的代码现在是这样:
$user=$this->db->loadDataRow('user');
$insertData=array(
'id'=>1,
'name'=>'roga',
'gender'=>'male',
'city'=>$city,
'location'=>'sh',
);
$user->create($insertData);
当然还可以这样:
$user=$this->db->loadDataRow('user');
$user->setByName('id',1);
$user->setByName('name','roga');
$user->setByName('gender','male');
$user->setByName('city',$city);
$user->setByName('location','sh);
$user->create();
可以看出,无论哪一种形式,都与真正的ORM几乎汉有区别。
ORM好处在哪里?这里已经完全清楚,其实,不仅是代码的可维护性,同时,也是让程序员做到,与SQL的无关性。
这两者,实际上都是相当重要的。而DRYSQL技术,不需要生成表与记录的对象文件,并且比ActiveRecord使用还要方便,可以说是最好的新技术了。 |
|
|