这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天
初识 Go 语言数据库框架
二、Go ORM——常用的支持主流数据库的ORM框架
什么是 ORM
对象关系映射模式是一种为解决面向对象与关系数据库存在的互不匹配的现象的技术。
- 连接数据库的桥梁;
- 只要提供了持久化类与表的映射关系,ORM 框架就能在运行时就能参照映射文件的信息,就能把对象持久化到数据库中。 ORM框架:为了解决面型对象与关系数据库存在的互不匹配的现象的框架。
当前ORM框架主要有五种:
(1)Hibernate 全自动 需要写hql语句
(2)iBATIS 半自动 自己写sql语句,可操作性强,小巧
(3)mybatis
(4)eclipseLink
(5)JFinal
GORM 模型
约定模型是标准的 struct,由 Go 的基本数据类型、实现了 Scanner 和 Valuer 接口的自定义类型及其指针或别名组成。 GORM 倾向于约定而非配置。默认下GORM 使用 ID 作为主键,使用结构体名的蛇形复数作为表名,字段名的蛇形作为列名,并使用 CreatedAt、UpdatedAt 字段追踪创建、更新时间。若开发者遵循 GORM 已有的约定,可以减少配置和代码量。如果约定不符合需求,GORM 允许开发者自定义配置它们。
GORM 使用 Go 语言编写,支持主流数据库,对开发者友好,国内大多都在用。GORM 具有全功能 ORM;具有多种关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承);在开发者常用的 Create,Save,Update,Delete,Find 中设置钩子方法;支持 Preload、Joins 的预加载;其模式有 Context、预编译模式、DryRun 模式;支持批量插入、FindInBatches、Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD;可支持自定义 Logger;具有灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus。 相关资料
HOOK
对象生命周期
Hook 是在创建、查询、更新、删除等关键操作之前或者之后调用的函数。
若开发者已经为 GORM 模型定义了指定的方法,则 HOOK 会在创建、更新、查询、删除时自动被调用。
如果任何回调返回错误,GORM 将停止后续的操作并回滚事务。
- 注意:钩子方法的函数签名为是
func(*gorm.DB) error