加载中...
Ent 是由 Facebook(Meta)开源的 Go 实体框架,以图为核心的数据建模方式和代码生成为特色,将数据模型定义为 Go 代码后自动生成类型安全的查询 API,擅长处理复杂关系与大型模式,是 Go 生态中独具一格的 ORM 方案。

| 类型 | Go 实体/ORM 框架 |
| 开源方 | Facebook(Meta) |
| 模型 | 实体图 |
| 机制 | 代码生成 |
| 许可协议 | Apache 2.0 |
Ent 是一个开源的 Go 实体(entity)框架,由 Facebook(现 Meta)团队开源并捐赠给相关开源基金会。它采用以图为核心的数据模型思路,并大量依赖代码生成,把数据模式定义为 Go 代码后自动生成类型安全的查询与操作接口。
与传统基于反射与标签的 ORM 不同,Ent 让开发者用 Go 代码显式定义每个实体的字段、边(edge,即关系)与索引,然后运行代码生成器产出一套强类型的 API。由于查询构造在编译期即受类型检查约束,许多错误可在编译阶段被发现,而非运行时才暴露。Ent 把实体之间的关系抽象为图中的边,天然适合表达和遍历复杂的关联结构。
Ent 适合模式复杂、关系繁多且对类型安全要求高的 Go 后端项目,如社交、权限、组织架构等以图状关系为特征的系统。它与 GraphQL 集成良好,常用于快速构建以实体图为基础的后端服务。
问:Ent 和 GORM 如何选择?答:GORM 上手快、约定式、灵活,适合大多数常规业务;Ent 依赖代码生成、强调编译期类型安全与图模型,更适合模式复杂、追求可靠性的项目,但需要适应代码生成的工作流。
问:修改模式后要重新生成代码吗?答:是的。Ent 的核心工作流是在修改实体模式定义后运行代码生成器,更新生成的 API,这一步保证了生成代码与模型始终保持同步与类型一致。

| 类型 | Go 实体/ORM 框架 |
| 开源方 | Facebook(Meta) |
| 模型 | 实体图 |
| 机制 | 代码生成 |
| 许可协议 | Apache 2.0 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧