ent - 一個強大的Go語言實體框架

banq 發表於 2022-10-31
框架 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/