为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 数据库 ORM 实现的必要性

PHP 数据库 ORM 实现的必要性

森栏 2019-04-21 20:40:51
其实并不抵触学习新东西和一些“高大上”的概念,但我一直以来最关心的只有一点:我的项目中能不能用到,这东西有什么用,好处是什么,代价是什么?网上很多都说面向对象的数据库操作方式可以将Model层直接解耦,不需要关心它是怎么实现的,而且可以使用OOP的方式,如getXXX()来获取记录的某个字段值。其实我一直想做一个游记的网站(类似百度旅游/马蜂窝),目录结构也在http://segmentfault.com/q/1010000002890348提出了,中途也因为看过很多IoC的文章很是头疼,发现碍于项目规模很难体现出它的优势,反而是加重负担为了设计而设计。分层已经使得action尽量精简,而且Model也可以做到不错的复用。1、实在不知道为什么越来越多使用ORM呢?是因为面向对象编程的需要(太笼统了)?还是说我的查询结果对象可以缓存?如果网站访问量大了,是不是把查询结果以对象形式缓存才是最终的解决办法?基于KV的noSQL是不是也可以替代?那数据库自身的缓存呢?2、其实解耦真不是最关心的问题(自认为还没达到要解耦的地步,上面的分层带来的复用性已经蛮不错了),ORM的builder看着也是醉了,不如直接Model里写SQL语句来的痛快,将来换数据库直接重写(不担心这个问题,不差这个时间),感觉性能和复用一直有点点的相悖,那抛开复用性和解耦的需求,如果要用ORM是不是就是因为对象缓存的收益?3、还有之前公司大哥说不要用join,直接嵌套查询,我说那不是假设文章页15篇文章上面有作者信息,我就要跑15趟post表,中途再跑15趟user表?他说查询结果可以缓存,不太明白这个缓存是数据库级别的还是Model对象级别的?不一一评论了,谢谢大家的回答!
查看完整描述

2 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

如果你有10个甚至5个小伙伴一起写SQL,今天这个人JOIN了3个表明天那个人写了子查询,后天另一个人批量updatewhere条件拼错,然后平均每天都有3次因为字段名字写错导致的bug,你就知道ORM的宝贵了
                            
查看完整回答
反对 回复 2019-04-21
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

Don'tfallinthetrapofprematureoptimalization
找到瓶颈制约。才是关键。不要纠结于某一部分的效率。
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 272 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信