Go的框架三件套 | 青训营笔记

69 阅读2分钟

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

一:GORM

Gorm是ORM框架,这不就明白它大致是做什么了。ORM框架是连接数据库的桥梁,只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。
个人觉得Gorm与goframe框架中的orm操作相比,有些落后。gf框架用tool gf gen dao后自动将数据库中的结构映射到结构体,并且为每个结构体定义了基础操作的方法。这就不用在代码中再手动去加orm结构体
func (s *CertifiCate_router) Find_all(c *gin.Context) {
var mod []*CertifiCate
db.Table("certificate").Find(&mod)
c.JSON(200, re(200, "ok", mod))
return
}

func (s *CertifiCate_router) Deleted(c *gin.Context) {
        mod := new(CertifiCate)
        c.ShouldBind(&mod)
        db.Table("certificate").Delete(&mod)
        c.JSON(200, re(200, "ok", nil))
}

db.Table("certificate").Where("id_number=? AND grade=?", mod.Id_number, mod.Grade).Find(&find)

func (s *Grade_examination) Edit(c *gin.Context) {
mod := new(Grade_phone)
c.BindJSON(&mod)
db.Table("instructor").Where("id=?", mod.Id).Updates(&mod)
c.JSON(200, re(200, "ok", nil))
}

以上是基础的增删改查操作

1.自动事务处理

通过 db.Transaction 函数实现事务,如果闭包函数返回错误,则回滚事务。 在事务中执行一些 db 操作(从这里开始,您应该使用 'tx' 而不是 'db') 返回任何错误都会回滚事务

GORM性能提高

b951ae1fd7c94ef7993dbf011cdd5b03_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp

GORMHook

e85e8296cba446f08b552384b809ae1b_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp

Kitex rpc框架

客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。 比较正式的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 所以说RPC是一种协议一套规范,用来远程过程调用的。也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

Kitex 是一个 RPC 框架,既然是 RPC,底层就需要两大功能:

Kitex框架和命令行工具,默认支持thrift和proto3两种LDL ,传输上kitex使用扩展的thrift作为底层的传输协议。IDL 全称是 Interface Definition Language,接口定义语言

为什么要使用IDL定义服务与接口?

76545455bcee4901976053e1609844bf_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp

Kitex生成代码各级目录作用

f11a40cc378248f2848c6eba4b82af95_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp