ORM和原⽣sql的简单理解
ORM:object relation mapping,即对象关系映射,简单的说就是对象模型和关系模型的⼀种映射。为什么要有这么⼀个映射?很简单,因为现在的开发语⾔基本都是oop的,但是传统的数据库却是关系型的。为了可以靠贴近⾯向对象开发,我们想要像操作对象⼀样操作数据库。
举个例⼦:获取⼀篇⽂章,传统的⽅式先要执⾏⼀个sql检索数据
select * from post where id = 1
然后输出标题和内容使⽤
echo $post['title']; echo $post['content'];
上⾯的代码遇到⾯向对象强迫症者,他们会纠结死的。
所以他们想出了这个东西,在ORM⾥获取⼀篇⽂章可以这样:
$post = postTable::getInstance()->find(1);#会再内部执⾏select * from post where id = 1
然后输出:
mongodb和mysql结合
echo $post->getTitle();
echo $post->getContent();
妈妈再也不⽤担⼼我的强迫症了^_^
⾼级点的应⽤,⽂章和分类是⼀对多关系、⽂章和标签是多对多关系
$cate = $post->getCategory(); //获取⽂章分类
echo $cate->getName(); //获取分类名
$tags = $post->getTags(); //获取⼀个⽂章的所有标签
是不是⼀个sql都没写就获取到我们需要的所有数据了?使⽤ORM可以完全不写sql⽽实现应⽤,这些ORM都替我们做了。
除此之外,orm还可以隔离底层数据库层,我们不需要关⼼我们使⽤的是mysql还是其他的关系型数据库。
我知道的orm: doctrine和propel
除了orm之外还有odm,即object document mapping,对象⽂档映射,使⽤⽂档数据库⽐如mongodb时使⽤
核⼼就是⽀持纯⾯向对象的开发,这样就会产⽣⼀个不得不⾯对的问题,处于数据源层的关系型数据库不⽀持⾯向对象中对象之间的复杂关系。
如何将系统的当前状态持久到数据源层将⾮常棘⼿。你可以在业务逻辑层,通过数据访问层来处理。ORM就是数据访问层强⼤的⼀种解决⽅案。通过它,可以最⼤限度隔离业务逻辑层和数据源之间的耦合度。
全名object relation mapping
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论