Web框架中的ORM框架

在 Python 实现的 Web 框架中,通过 API 接口来访问后端的视图函数,视图函数对数据库中的数据进行处理然后返回给前端。在这个过程中,视图函数不是直接通过 SQL 来操作数据库,而是通过模型类的对象属性或对象方法来操作数据库,这就是 ORM 带来的便利。

一、ORM 简介

ORM(Object-Relational Mapping),直接翻译成中文就是对象关系映射。

从字面意思即可理解,ORM 是模型对象到关系数据库数据的映射。

ORM 的映射关系是通过 ORM 框架来实现的,ORM 框架是用于实现 ORM 技术的程序,ORM框架有很多,不同语言、不同 Web 框架使用的 ORM 框架是不相同的。

在 Python 的常用 Web 框架 Flask、Django 中,都已经内置了 ORM 框架,所以在使用 Flask 和 Django 等框架开发时,默认就已经有 ORM 框架可以使用了。

当调用模型类对象的方法时,ORM 框架会帮我们生成对应的 SQL 语句,然后对数据库进行增删改查操作。对数据库进行操作后,ORM 框架会将修改后的数据映射到模型类对象的属性中。

所以,使用 ORM,只要调用模型类对象的方法,即可操作数据库了。

二、ORM 框架的作用

ORM 框架完成了模型类对象到数据库之间的映射。不管使用哪种数据库,SQLite、MYSQL、Oracle等,ORM 都可以将对象的方法转换成 SQL 语句,然后对数据库操作。

使用 ORM 框架,不需要直接面向数据库编程,而是定义模型类,通过类和类对象就能操作它所对应的数据表中的数据。

ORM框架可以根据我们设计的类自动帮我们生成数据库中的表,省去了我们自己在数据库中建表的过程。

配置好数据库连接信息,定义模型类,执行数据库迁移后,就可以通过类和对象完成数据增删改查操作。

三、ORM 的优点

ORM 对数据库操作进行了封装,使用起来很方便,也有很多优点:

1. 在开发过程中,只需要面向对象编程即可,不需要面向数据库编程。

2. 对数据库的所有操作,ORM 都转化成了对类属性和类方法的操作。

3. 不用编写操作数据库的 SQL 语句。

4. ORM 实现了数据模型与数据库的解耦,对数据库的操作进行了封装,避免了不同数据库操作上的差异,不需要关注用的是什么数据库,MySQL、Oracle 等都一样。

5. 在开发过程中,通过简单的配置就可以轻松更换数据库,简单方便。

具有这些优点,所以 ORM 框架非常实用,很多编程语言的 Web 框架中都内置了 ORM 框架。

四、ORM 的缺点

因为 ORM 框架对数据库的操作进行了封装,多了转换的过程,所以有一些性能损失:

1. 在通过模型类操作数据库时,相比较直接使用 SQL 语句操作数据库,会有性能损失。

2. 通过模型类进行查询操作时,数据库中的查询结果要先转化成对象,在映射过程中也有性能损失。

不过这些性能损失相对于 ORM 带来的便利,还是选择 ORM 的便利,在很多项目中,这种便利对开发人员来说是非常有必要的,性能可以采用其他方式来优化。

Web框架中的ORM框架相关推荐

  1. json日期格式化 java_java_Java Web程序中利用Spring框架返回JSON格式的日期,返回Json时格式化日期Date 第一 - phpStudy...

    Java Web程序中利用Spring框架返回JSON格式的日期 返回Json时格式化日期Date第一步:创建CustomObjectMapper类 /** * 解决SpringMVC使用@Respo ...

  2. mysql django构架图_Django框架之数据库ORM框架

    首先,我来介绍一下什么是ORM框架: O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思.在ORM框架中,它帮 ...

  3. 框架中建立浮动框架_建立代理,而不是框架

    框架中建立浮动框架 自从引入Java注释以来,它已成为大型应用程序框架API的组成部分. 此类API的很好示例是Spring或Hibernate的示例,其中添加了几行注释代码可实现非常复杂的程序逻辑. ...

  4. Android 中的ORM框架

    在android 中,内置了sqlite数据库,java web 中,用惯了Hibernate ,想找找android中是否也有类似的orm框架,后来在开源中国看到了orman,这是一个很不错的框架. ...

  5. 【ORM框架】Python ORM框架——peewee(详细)

    文章目录 前言 一.peewee的安装和入门 1.字段类型表&Meta类型表&类型属性表 字段类型表 Meta类型表 类型属性表 2.设计表结构 防止连接丢失 二.表的设计&操 ...

  6. Java orm框架的优缺点,ORM框架的简单介绍

    1. 什么是ORM? 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单来说,将程序中的兑现自动持久化 ...

  7. 什么是ORM框架?常用的orm框架有哪些?能否不用ORM框架直接使用SQL语句创建WebAPI?

    ORM(Object-Relational Mapping,对象关系映射)框架是一种将面向对象程序中的实体类(对象)与关系型数据库中的表之间建立映射关系的技术.它允许开发人员使用面向对象编程语言来操作 ...

  8. 解决laravel框架中Eloquent ORM的save方法无法插入数据的问题

    学习laravel中: 今天在测试使用Eloquent ORM将数据使用 save()方法插入到mysql中时,出现了错误,如图所示: 在网上查阅资料后找到了原因: 使用save方法新增数据: lar ...

  9. php larve,封装composer包,实现thinkphp、larverl、yii框架中使用(使用框架实现回调方法)...

    完美解决在 event 里面 ,onmessage 里面如何 嵌入 thinkphp,使用框架实现回调方法 1.安装[code]composer require tinymeng/worker-soc ...

最新文章

  1. Can't connect to MySQL server on '127.0.0.1' (10061) (code 2003)解决方法
  2. nexus代理地址整理
  3. C++平衡二叉树(AVL树)
  4. PHP魔法函数性能分析
  5. 洛谷 P1202 模拟 - 黑色星期五 Friday the Thirteenth
  6. 计算机水平考试改革,浅析全国计算机等级考试改革及应对策略
  7. 电脑有电流声怎么解决_【音响杂谈】音响有电流声怎么办 - 音响杂音的处理办法...
  8. oopc——1.抽象
  9. 16进制在c语言中用来做什么,十六进制在代码中有什么用
  10. php中余数为0,PHP中余数、取余的妙用
  11. 分享一套帮助你优化开发web应用的jQuery插件集 - Vanity Toolset
  12. php opendir(),PHP opendir()用法及代码示例
  13. session和coolie的区别
  14. 景深与光圈与焦距关系
  15. 蓝灯鱼AI人工智能、知识产权产品全面升级
  16. Failed to introspect Class druid问题
  17. 如何设计USB TYPE-C接口的显示器和电视机,形态三独立功能的双USB-C接口 +一个HDMI接口的显示器
  18. windows蓝屏代码含意全集
  19. Unity3D显示Kinect线条图
  20. 深度学习Spring5底层原理(黑马学习随笔)

热门文章

  1. Fedora 27安装vim插件YouCompleteMe
  2. 阿里云获工信部CDN业务经营许可 云计算业内资质最全
  3. [20150805]提升scn4.txt
  4. 7、C语言 —— 字符串常用处理函数
  5. Win32 控件篇(2)
  6. 通俗易懂的5G 入门科普!
  7. GitHub开源项目 - Jeecg-Boot开始开发平台介绍
  8. Windows上设置Docker共享盘符
  9. html5和flash播放器
  10. HDU1466 计算直线的交点数