Go框架三件套与Gorm(上)| 青训营笔记

74 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第5天。

本文重点内容

  • Go 三个框架概述
  • Gorm部分操作介绍

课程内容详解

概述

  • Gorm ORM框架
  • Kitex 字节RPC

Kitex[kaɪt’eks] 字节跳动内部的 Golang 微服务 RPC 框架,具有高性能强可扩展的特点,在字节内部已广泛使用。如果对微服务性能有要求,又希望定制扩展融入自己的治理体系,Kitex 会是一个不错的选择

  • Hertz 字节HTTP框架

Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。

一个Hertz示例项目的结构图: image.png

image.png

Gorm

GORM Guides | GORM - The fantastic ORM library for Golang, aims to be developer friendly.

官方声明Gorm的一部分特性:

  • 全功能 ORM
  • 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
  • Create,Save,Update,Delete,Find 中钩子方法
  • 支持 PreloadJoins 的预加载
  • 事务,嵌套事务,Save Point,Rollback To Saved Point
  • Context、预编译模式、DryRun 模式
  • 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
  • SQL 构建器,Upsert,数据库锁,Optimizer/Index/Comment Hint,命名参数,子查询
  • 复合主键,索引,约束
  • Auto Migration
  • 自定义 Logger
  • 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…

基础使用

image.png

数据库支持

连接到数据库 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.

DSN的理解:

go-sql-driver/mysql: Go MySQL Driver is a MySQL driver for Go's (golang) database/sql package (github.com)

本文小结

  • Go 三个框架概述
  • Gorm部分操作介绍

参考资料与引用

Github库

官方教程