手把手带你写一个 Web 框架
叶剑峰
腾讯高级工程师,前滴滴技术专家
22731 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
特别放送 (1讲)
手把手带你写一个 Web 框架
15
15
1.0x
00:00/00:00
登录|注册

25|GORM(上):数据库的使用必不可少

使用 database/sql 的 db.ExecContext 方法
触发启动 processor 中的 fns 方法
初始化 gorm.DB 的 ConnPool
初始化 gorm.DB 的 callbacks
初始化 gorm.DB 结构
初始化 gorm.Config 结构
callbacks
ConnPool
Logger
AfterInitialize(*DB)
Apply(*Config)
Explain(sql string, vars ...interface())
QuoteTo(clause.Writer, string)
BindVarTo(writer clause.Writer, stmt *Statement, v interface())
DefaultValueOf(*schema.Field)
DataTypeOf(*schema.Field)
Migrator(db *DB)
Initialize(*DB)
Name()
DryRun 空跑功能在 gorm.DB 结构中,能让所有 SQL 操作并不真正执行
Gorm 的优秀编码方式:Option 方式、定义驱动、ConnPool 定义实现标准库方法的接口
学习了 Gorm 的数据结构和创建连接的核心源码流程
db.Create
gorm.Open
Config
Option
Dialector:数据库连接器
Gorm 是一个有一定体量的项目,使用 MIT 许可证协议
Gorm 是一个流行的 ORM 库,作者是 Jinzhu,目前是字节跳动的员工
ORM 是一种建模思想,建立数据库表结构时也建立了业务模型
ORM 是一种将数据库中的数据映射到代码中对象的技术
思考题
小结
源码
数据结构
Gorm
ORM
GORM 源码分析

该思维导图由 AI 生成,仅供参考

你好,我是轩脉刃。
一个 Web 应用,有很大部分功能是对数据库中数据的获取和加工。比如一个用户管理系统,我们在业务代码中需要频繁增加用户、删除用户、修改用户等,而用户的数据都存放在数据库中。所以对数据库的增删改查,是做 Web 应用必须实现的功能。而我们的 hade 框架如何更好地支持数据库操作呢?这两节课我们就要讨论这个内容。

ORM

提到数据库,就不得不提 ORM 了,有的同学一接触 Web 开发,就上手使用 ORM 了,这里我们要明确一点:ORM 并不等同于数据库操作。
数据库操作,本质上是使用 SQL 语句对数据库发送命令来操作数据。而 ORM 是一种将数据库中的数据映射到代码中对象的技术,这个技术的需求出发点就是,代码中有类,数据库中有数据表,我们可以将类和数据表进行映射,从而使得在代码中操作类就等同于操作数据库中的数据表了
ORM 这个概念出现的时间无从考究了,基本上从面向对象的编程思想出来的时候就有讨论了。但是到现在,是否要使用 ORM 的讨论也一直没有停止。
不支持使用 ORM 的阵营的观点基本上是使用 ORM 会影响性能,且会让使用者不了解底层的具体最终拼接出来的 SQL,容易造成用不上索引或者最终拼接错误的情况。而支持使用 ORM 的阵营的观点主要是它能切切实实加速应用开发。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

GORM是一个流行的Golang ORM库,它提供了数据库连接和操作的功能。本文深入介绍了Gorm的核心概念和一些重要的实现细节,包括数据库连接的初始化过程、callbacks的执行方法以及Gorm封装的database/sql的关键步骤。通过对Gorm源码的分析,读者可以了解Gorm是如何使用Open创建数据库连接,以及如何使用Create方法来创建数据。此外,文章还提到了Gorm中的DryRun功能,它可以让在DB中的所有SQL操作并不真正执行,这在调试时非常有用。总的来说,本文为想要深入了解Gorm的读者提供了一份很有价值的技术资料。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一个 Web 框架》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • Vincent
    对优秀的开源代码,应该吃透

    作者回复: 是的,gorm确实值得多看几遍

    2021-11-15
    2
    1
  • fns 中 真正的 Create 里面有判断 dryRun

    作者回复: 是的,跟到源码就能找到了

    2021-12-14
  • isDryRun := !db.DryRun && db.Error == nil if !isDryRun { return }

    作者回复: 恭喜小哥,找到了

    2021-12-14
  • 牛玉富
    本篇切入curd正题了😄
    2022-01-13
    1
  • 武汉行驶证查违章信息
    gorm 代码走读笔记 https://blog.csdn.net/u013010890/article/details/132613100
    2023-08-31归属地:上海
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部