You are viewing an old version of this page. View the current version.
Compare with Current View Page History
Version 21 Current »
在之前的章节 代码分层设计 有提及到"模型"的概念。
这一章节,我们集中介绍一下在GoFrame中关于模型的定义以及对应的管理。
GoFrame
数据模型又叫做实体模型,主要是来自于底层持久化数据库的数据结构,例如:MySQL、Redis、MongoDB、Kafka等等。这部分数据结构是由第三方系统维护的,可以通过工具对其集合数据结构进行识别,并自动生化成对应的程序数据模型代码。这部分数据模型的代码位于/internal/model/entity目录下。开发者不需要手动在程序中维护数据模型,在GoFrame框架规范中,数据模型统一使用CLI工具统一维护,代码自动生成。
MySQL
Redis
MongoDB
Kafka
/internal/model/entity
CLI
数据模型示例
业务模型主要包含两类:接口输入/输出模型 与 业务输入/输出模型,由model模型层统一管理。
model
接口输入/输出模型用于系统/服务间的接口交互,通常被api接口层(handler)调用。在GoFrame框架规范中,这部分输出输出模型名称以XxxReq和XxxRes格式命名。
api
handler
XxxReq
XxxRes
接口输入模型示例
业务输入/输出模型用于进程内部模块/组件之间的方法调用交互,特别是api->service或者service->service之间的调用。在GoFrame框架规范中,这部分输入输出模型名称以XxxInput和XxxOutput格式命名。
api->service
service->service
XxxInput
XxxOutput
业务输入模型与业务输出模型示例
DO
在GoFrame有一类特殊的业务模型DO,介于业务模型与数据模型之间,主要用于结合框架强大的ORM组件大大简便DAO数据访问操作。
ORM
DAO
DO主要用于DAO数据访问操作
上面我们讲到的都是由model模型层维护的公共模型,但部分场景下还存在内部私有的模型,用于模块内部调用,不对外公开。