这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天。
在大作业实现过程中,使用到了Gorm,这是一种orm框架,本篇文章将会对orm进行介绍。
概念
专业化的角度来说,orm叫对象关系映射,即Object-Relation Mapping,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
ORM在面向对象模型与关系模型之间架起桥梁。通过对象与数据库之间映射的元数据,自动透明地把编译语音中的对象持久化到关系数据库里,对数据库的操作可以转换为对对象的操作。
我们的程序需要进行数据库相关操作时,我们一般都会先创建数据库,设计表结构和字段,使用列如golang的grom、python的sqlalchemy这类的模块来连接数据库。然后编写数据访问层代码,在业务逻辑层去调用数据访问层执行数据库操作。
gorm生成的数据对应如下所示:
| 数据库 | 对象 |
|---|---|
| 表(table) | 结构体(struct) |
| 表中的记录(record) | 对象(object) |
| 表中的字段(field) | 对象中的属性(attribute) |
需要说明的是,ORM 是一种双向数据交互技术,它不仅可以将对象中的数据存储到数据库中,也可以反过来将数据库中的数据提取到对象中。
ORM 的缺点
ORM 在提高开发效率的同时,也带来了以下几个缺点:
- 自动生成 SQL 语句会消耗计算资源,会对程序性能造成一定的影响。
- 对于复杂的数据库操作,ORM 通常难以处理,即使能处理,自动生成的 SQL 语句在性能方面也不如手写的原生 SQL。
- 生成 SQL 语句的过程是自动进行的,不能人工干预,这使得开发人员无法定制一些特殊的 SQL 语句。