首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ORM:在性能和可读性之间的权衡

ORM(Object Relation Mapping),对象关系映射。它把表当做对象,表与表之间的关系,不再是数据结构与数据结构之间的关系,而是对象与对象之间的作用关系。常见的ORM,例如:.NET的Entity Framework,JAVA的Hibernate,Python的SQLAlchemy。本文以ThinkPHP 5为例。

Db类属于数据库访问层,通常不能很好地包含和处理业务逻辑。Model是建立在数据库访问层基础上的更加抽象的处理业务逻辑的模型层,有可能一个模型关联好几张数据表。有些功能,比如异地登录、多设备登录,由于不是简单的账号、密码比对,模型比Db类好实现。

模型是使用面向对象思维使用、设计的。模型处理业务,建立在Db基础上,而Db数据库访问层查询数据库。模型底层仍然是数据库访问抽象层,可以自动调用数据库抽象访问层。这也体现了框架的强大之处。

4种查询动词中,get、find是查询一条数据库记录或者一条模型对象,all、select是查询一组数据库记录或者一组模型对象,而find、select是Db特有的方法。

由于抽象、封装,框架有性能损耗,会比使用原生SQL要慢,但是不能因模型性能稍差而放弃使用。在中小型web开发中,框架性能损耗通常在可以允许的区间范围内。改善性能的第一步往往是SQL优化。而好代码的第一原则是可读性,这也正是ORM的优点所在。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180210G146XK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券