这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
ORM框架
ORM框架的出现主要是为了解除数据库与服务器的耦合,一般是为了面向对象的语言提供对数据库进行面向对象操作的支持,本节课导师主要介绍了GORM。关键点如下
1.gorm的一些默认约定,包括默认ID为主键,还包括Model中的传入ID为搜搜操作兜底。 2.gorm也通过数据库驱动来连接数据库,可以根据不同的数据库更换或者自行开发驱动。 3.gorm在插入操作中如果出现数据冲突使用onconflict来处理。 4.gorm的操作是责任链模式,使用有个关键点就是所有的少选条件函数必须在“动词”的执行函数之前调用,因为“动词”的执行函数一旦调用SQL语句就已经完成执行。 5.gorm的查询操作使用firstfind时要注意,该查询查询不到时会返回错误,这么设计的原因可能是因为该函数是查找一条记录,这种查询的目的性需求往往是比较强的,而find的“一定要找到的目的性”,可能没有那么强,所以做了这样的设计。还有一个关键点,gorm在使用结构体查询的时候会忽略0值, 这是因为go中的默认值表示在数字上就是0值,如果实在需要查找0则需要构建map来查询,同理使用结构体更新的时候,只会更新非零值,想要更新0值就需要使用map 6.gorm中也实现了软删除,具体的实现方式需要在结构体中内置一个gorm.deletedat,被软删除后的条目需要unscoped来查询。 7.gorm也提供了对事务的支持除了提供的基本的提交和回滚操作,gorm还提供了transaction来防止开发人员漏写提交和回滚 8.同时gorm还提供了基本操作的hook操作,这里需要注意一旦hook返回错误,前面的数据库操作将回滚 9.这里老师特地提到了gorm的性能提高,主要是通过关闭默认事务(为了保护数据的完整性,写操作默认会被封装在事务中)Kitex
Kitex是面向微服务架构的RPC框架,同时Kitex包含了功能强大的中间代码生成工具,中间老师介绍了用来定义服务与接口的IDL,定义好的IDL不在乎底层提供服务的语言是什么,只要符合接口标准就可。同时Kitex中也对接了主流的服务注册与发现中心。
Hertz
Hertz是一个全新的HTTP框架,提供基本的路由操作,以及中间件的调用,同时Hertz也包含了高效的代码生成工具hz,2月后有Hertz会完成进一步的优化,届时其性能会有Gin框架的几倍