3

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

 1 year ago
source link: https://www.jdon.com/63121
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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


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/ 


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK