设计模式DataBaseSQL和GORM实践|青训营笔记-掘金

61 阅读2分钟

01.理解 database/sq

dotobase/sgl 的基本用法,设计原理,基础概念介绍

基本用法-Quick Start

设计原理

image.png

image.png

02.GORM 使用简介

GORM 的基本用法,Model 定义,惯例约定,关联操作

背景知识

“设计简洁、功能强大、自由扩展的全功能 ORM”

  • 设计原则: API 精简、测试优先、最小惊讶、灵活扩展、无依赖 可信赖

  • 功能完善:

    • 关联:一对一、一对多、单表自关联、多态; Preload、Joins 预加载、级联删除;关联模式;自定义关联表
    • 事务: 事务代码块、嵌套事务、Save Point
    • 多数据库、读写分高、命名参数、Map、子查询、分组条件、代码共享、SQL表达式(查询、创建、更新)、自动选字段、查询优化器
    • 字段权限、软删除、批量数据处理、Propared Stmt、自定义类型、命名策略、虚拟字段、自动 tack 时间、SQL Buildor、Loggor
    • 代码生成、复合主键、Constraint、Prometheus、Auto Migration、真·跨数据库兼容...
    • 多模式灵活自由扩展
    • Developer Friendly

基本用法

基本用法-CRUD

模型定义

模型定义-惯例约定

约定优于配置

  • 表名为 struct name 的 snake cases 复数格式
  • 字段名为 field name 的 snake case 单数格式
  • ID /ld 字段为主键,如果为数字,则为自增主键
  • CreatedAt 字段,创建时,保存当前时间
  • UpdatedAt 字段,创建、更新时,保存当前时间
  • gorm.DeletedAt 字段,默认开启 soft delete 模式

一切都可配置 gorm.io/docs/conven…

关联介绍

关联操作 - CRUD

关联操作 - Preload / Joins预加载

关联操作 - 级联删除

03.GORM 设计原理

SOL 生成,扩展机制,ConnPool, Dialectar 等

image.png

SQL是怎么生成的?

为什么?

  • 自定义Clause Builder
  • 方便扩展 Clause
  • 自由选择 Clauses

插件是如何工作的?

image.png

为什么?——灵活定制&自由扩展

  • 多租户
  • 多数据库、读写分离
  • 加解密、混沌工程

ConnPool是什么

image.png

image.png

image.png

image.png

image.png

image.png

image.png

Dialector是什么?

image.png

04.GORM 最佳实践

image.png

数据序列化与SQL表达式

批量数据操作

代码复用、分库分表、Sharding

混沌工程

Logger/Trace

Migrator

Gen生成

安全问题

GORM 最佳实践,企业级开发,FAQ 等