在深入了解GORM之前,先来看一看它的一些关键特性:
- 全功能的ORM:支持几乎所有的ORM功能,包括模型定义、基本的CRUD操作、复杂查询、关联处理等。
- 关联支持:非常灵活的关联(has one, has many, belongs to, many to many, polymorphism, single-table inheritance)功能。
- 钩子(Hooks):支持在create/save/update/delete/find操作前后进行自定义处理。
- 预加载(Eager Loading):使用Preload, Joins等方式预加载关联数据。
- 事务处理:支持事务、嵌套事务、保存点以及回滚到保存点。
- 上下文支持: 支持上下文管理、准备语句模式、DryRun模式。
- 批量操作: 支持批量插入、分批次查询、通过Map进行查找/创建、使用SQL Expr和Context Valuer进行CRUD。
- SQL构建器: 支持Upsert、锁定、优化器/索引/注释提示、命名参数以及子查询。
- 复合主键、索引、约束:对于复合主键、索引和约束也有很好的支持。
- 自动迁移(Auto Migrations): 支持自动数据库迁移。
- 日志: 支持日志记录功能。
- 插件API:提供可扩展、灵活的插件API, 如数据库解析器(支持多数据库、读写分离)/ Prometheus监控。
- 测试完备:每一个功能都伴随着对应的测试用例。
接下来,我们将通过丰富的示例详细讲解如何使用GORM进行数据库开发。