GORM设计与实践 | 青训营笔记
GROM:设计简洁、功能强大、自由拓展的全功能ORM
基本用法:
操作数据库
- 创建
- 读取
模型定义:
约定优于配置
- 表名为struct name的snake_cases复数格式
- 字段名为field name的snake_cases单数格式
- ID/id字段为主键,如果为数字,则为自增主键
- CreatedAt字段,创建时,保存当前时间
- gorm.DeletedAt字段,默认开启soft delete模式
一切配置都可以更改
关联介绍:
关联的关系,自定义主键
关联操作
CRUD
增、删、查、改、批量操作。可以方便管理数据
Preload/Joins 预加载
方便查找数据
级联删除
保证没有孤儿数据,每一个数据都是有用的
有分为是否根据数据库的依赖来删除
设计原理:
ConnPool
- 查找缓存的预编译SQL
- 未找到,将收到的SQL和Vars预编译
- 使用缓存的预编译SQL执行
Dialector
最佳实践
数据序列化与SQL表达式
- GROM提供了SQL表达式的支持
批量数据操作
批量创建/查询
批量更新
批量数据加速操作
- 方法1:关闭默认事物:输入一些参数来关闭事物,以此来提升性能
- 方法2:'SkipHooks'跳过运行Create时的Hook方法
- 方法3:Prepared Statement 预编译SQL语句
代码复用
Migrator
Gen代码生成
管理生成一些SQL