这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
Gorm
Gorm是一个已经迭代了10年+的功能强大的ORM框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展。GORM 并不包含在 Go 标准库中,因此,我们需要先安装 GORM 及需要连接对应数据库的驱动。Gorm 官方支持的数据库类型有:MySQL, PostgreSQL, SQlite, SQL Server。
ORM 全称Object–relational mapping,即对象关系映射,是一种用于在关系数据库和面向对象的编程语言堆之间转换数据的编程技术(Wikipedia,并非只有面向对象语言才支持 ORM,事实上,Go 就不是一个面向对象语言)。通过 ORM 技术,我们可以将关系数据库中某个数据表的结构关联到某个类/结构体上,并通过修改类/结构体实例的方式轻易的完成数据库增删改查(CRUD)的任务。通过 ORM 技术,我们得以以一种更加友好且高效的方式,在尽量不接触 SQL 语句的情况下操作数据库。
GORM特性:
- 全功能 ORM
- 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
- Create,Save,Update,Delete,Find 中钩子方法
- 支持
Preload、Joins的预加载 - 事务,嵌套事务,Save Point,Rollback To Saved Point
- Context、预编译模式、DryRun 模式
- 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
- SQL 构建器,Upsert,数据库锁,Optimizer/Index/Comment Hint,命名参数,子查询
- 复合主键,索引,约束
- Auto Migration
- 自定义 Logger
- 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
- 每个特性都经过了测试的重重考验
- 开发者友好
关于连接池:
连接池是什么?
连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。
连接池有什么好处?
- 减少连接创建时间
- 简化的编程方式
- 受控的资源使用
GORM使用Database / SQL来维护连接池;