ent - 一个强大的Go语言实体框架

22-10-31 banq

ent是一个简单而又功能强大的Go语言实体框架,ent易于构建和维护应用程序与大数据模型。
  • 图就是代码 - 将任何数据库表建模为Go对象。
  • 轻松地遍历任何图形 - 可以轻松地运行查询、聚合和遍历任何图形结构。
  • 静态类型和显式API - 使用代码生成静态类型和显式API,查询数据更加便捷。
  • 多存储驱动程序 - 支持MySQL, PostgreSQL, SQLite 和 Gremlin。
  • 可扩展 - 简单地扩展和使用Go模板自定义。


ent允许直接在嵌入语言中使用基于图的数据模型,而不是强迫开发人员学习新的查询语言,如 Datomic datalog 或 SPARQL,同时避免锁定到特定的数据存储后端。
使用方便:
  • * 使用Ent+Atlas进行自动数据库迁移。Ent实现了很多伟大的低级别的默认,不需要考虑(外键约束、索引、连接表的命名等等)。
  • * 从Ent Schema生成GraphQL API
  • * 生成Protobuf定义,供内部工具使用(现在使用Buf作为实际的工具,但生成protobuf可以节省大量的时间)。
  • * 能够快速制作真正复杂的多边连接,而不需要真正考虑SQL,这使得新功能能够快速实现。
  • * 查询优化,例如在GraphQL查询中使用WINDOW子句进行分页(我甚至都没有想到这是有可能的)。
  • * 生成的代码有很多行,但它的结构非常好,而且是习惯性的,使其易于扩展。


如果您只是在寻找 ORM + GraphQL,请尝试 Entgql,它是带有 Gqlgen 库 [1] 的 GraphQL 的 Ent 扩展。定义 ORM 模式后,它将为中继服务器生成 GraphQL 查询。您仍然需要自己实现 GraphQL 突变,但至少它会为您创建输入类型(用于创建/更新)。
https ://github.com/99designs/gqlgen

TypeScript 中一个 Ent 启发的 ORM:https ://aphrodite.sh/