GORM 是 Go 语言中最流行的对象关系映射(ORM)库,提供链式 API、关联管理、自动迁移、钩子与事务等完整功能,支持 MySQL、PostgreSQL、SQLite 等主流数据库,是 Go 后端开发的事实标准数据层之一。

| 类型 | Go ORM 库 |
| 作者 | Jinzhu |
| 数据库 | MySQL、PostgreSQL 等 |
| 特性 | 关联、迁移、钩子 |
| 许可协议 | MIT |
GORM 是 Go 语言生态中使用最广泛的对象关系映射(ORM)库,由 Jinzhu(张金柱) 开发并开源。它让开发者以结构体(struct)映射数据库表,通过链式方法完成增删改查,而无需手写大量 SQL,是众多 Go 后端项目的数据访问层首选。
GORM 以开发者友好著称,采用约定优于配置:结构体字段按命名约定映射到表列,主键、时间戳等常见字段可被自动识别与维护。它提供关联(一对一、一对多、多对多)、预加载、自动迁移、钩子回调、事务、软删除、复合主键等丰富特性。第二代 GORM(v2)对 API 与性能进行了重构,并引入 driver 抽象以统一支持 MySQL、PostgreSQL、SQLite、SQL Server 等数据库。
GORM 广泛用于各类 Go 后端服务的数据持久化,常与 Gin、Echo 等 Web 框架搭配,构成完整的后端技术栈。对于希望快速建模、减少样板 SQL、又能在需要时回退到原生 SQL 的团队,它兼顾了效率与灵活性。
问:ORM 会带来性能损耗吗?答:相比手写 SQL,ORM 存在一定抽象开销,复杂查询若使用不当也可能产生 N+1 查询等问题。GORM 提供预加载、原生 SQL、批量操作等手段来优化,合理使用时性能损耗通常可接受。
问:GORM 能执行原生 SQL 吗?答:可以。GORM 允许直接执行原生 SQL 语句并把结果扫描到结构体中,便于处理 ORM 难以表达的复杂查询,做到抽象便利与底层可控的平衡。

| 类型 | Go ORM 库 |
| 作者 | Jinzhu |
| 数据库 | MySQL、PostgreSQL 等 |
| 特性 | 关联、迁移、钩子 |
| 许可协议 | MIT |
登录 后参与讨论
暂无讨论,来发表第一条评论吧