v2.0 - 2020.08
GORM 2.0 是基于用户过去几年中的反馈进行思考后的重写,在该发行版本中将会引入不兼容 API 改动。
- 性能优化
- 代码模块化
- Context,批量插入,预编译模式,DryRun 模式,Join 预加载,Find To Map,Create From Map,FindInBatches 支持
- SavePoint/RollbackTo/Nested Transaction 支持
- 命名参数、Group 条件、Upsert、锁定、优化/索引/评论提示支持、SubQuery 改进
- 完整的自引用支持,连接表改进,批量数据的关联模式
- 插入时间、更新时间可支持多个字段,加入了对 unix (nano) second 的支持
- 字段级权限控制:只读、只写、只创建、只更新、忽略
- 全新的插件系统:多数据库,由 Database Resolver 提供的读写分离支持,Prometheus 集成,以及更多…
- 全新的 Hook API:带插件的统一接口
- 全新的 Migrator:允许为关系创建数据库外键,约束、检查其支持,增强索引支持
- 全新的 Logger:context 支持、提高可扩展性
- 统一命名策略(表名、字段名、连接表名、外键、检查器、索引名称规则)
- 更好的数据类型定义支持(例如 JSON)
v1.0 - 2016.04
破坏性变更:
gorm.Open
返回类型是*gorm.DB
而不是gorm.DB
- Update 只会更新有变更的字段
- 开启软删除后,默认只会检查
deleted_at IS NULL
的记录 - 根据 golint 实现的新 ToDBname 初始化逻辑,例如
HTTP
、URI
会被转换为小写,HTTP
其 db 名称为http
而不是h_t_t_p
,但对于列表中不包含的其他初始值,例如SKU
,其 db 名称依然为s_k_u
,而此更新已将其修正为sku
RecordNotFound
错误已被重命名为ErrRecordNotFound
mssql
已被重命名为github.com/jinzhu/gorm/dialects/mssql
Hstore
已移至github.com/jinzhu/gorm/dialects/postgres