GORM V2 带来的知识盲区

GORM V2 带来的知识盲区

GORM v2 是完全重写的,现已正式发布,带来了大量的改进以及新功能,我在翻译文档的过程中,遇到了一些以前没见过的新知识,在这里仅对相关概念做一下记录。

如果想要查看完整的内容,应该访问 release note 或者 发布说明

Hints

Optimizer Hints、Index Hints、Comment Hints,jinzhu 大佬的建议是不翻译,中文词不达意

这是提示相关的功能,用于优化 SQL 等,需要了解 sql 执行过程帮助理解。

在 GORM 中的使用可以参考:https://gorm.io/docs/hints.html

Prepared Statement Mode

Prepared Statement Mode 应该是一个来自 JAVA 的概念,可以译作预编译模式,作用是将生成的 SQL 缓存下来,提高后续的效率。

在 GORM 中的使用可以参考:https://gorm.io/docs/performance.html#Caches-Prepared-Statement

Preload 和 Joins Preload

v1 仅支持 Preload。

在进行预加载时,PreloadJoins Preload 作用类似,区别在于 Preload 会通过两条 SQL 完成查询,而 Joins Preload 通过一条 SQL 完成查询,至于用哪个就看自己的情况和习惯了。

此外,Joins Preload 还可以指定链接方式和字段等,更加灵活。

在 GORM 中的使用可以参考:https://gorm.io/docs/performance.html#Caches-Prepared-Statement

嵌套事务

相关概念有:Nested Transaction/SavePoint/RollbackTo SavePoint,即:嵌套事务、保存点、回滚至保存点

之前只知道事务和回滚,没想到还可以套娃,触及到知识盲区了

在 GORM 中的使用可以参考:https://gorm.io/docs/transactions.html

Group Conditions

分组条件,不算新内容,只是一个以前没注意到的示例,条件较多时可以参考

在 GORM 中的使用可以参考:https://gorm.io/docs/advanced_query.html#Group-Conditions

Batch Insert

批量插入,一个实用的功能

在 GORM 中的使用可以参考:https://gorm.io/docs/create.html#Batch-Insert

Upsert

update or insert

在数据冲突时(例如要 insert 的数据的存在主键或唯一索引冲突),如何处理,也是一个比较常见的问题。

在 GORM 中的使用可以参考:https://gorm.io/docs/create.html#Upsert-On-Conflict

DryRun

干运行模式,作用是:仅生成但不执行 SQL 语句,这在调试的时候很有用

在 GORM 中的使用可以参考:https://gorm.io/docs/gorm_config.html#DryRun

字段级权限控制

比较高级的用法,字段级别的权限控制,通过 tag 定义

在 GORM 中的使用可以参考:https://gorm.io/docs/models.html#Field-Level-Permission

全新的插件系统

一个非常亮眼的功能,为 GORM 生态打下了基础。

目前已有的插件包括:多数据库支持,读写分离支持,prometheus 集成

如何编写插件可以参考:https://gorm.io/docs/write_plugins.html

其它

此外,还有大量更新,查看 GORM DocsGORM 2.0 Release Note 获取详情

参考链接

GORM Docs

评论