A simple yet powerful entity framework for Go that makes it easy to build and maintain applications with large data-models.
Ent is an entity framework for Go that enables developers to model database schemas as Go objects and interact with data through a statically typed, code-generated API. It solves the problem of managing complex data models in Go applications by providing a declarative, type-safe approach to database operations and graph traversal.
Go developers building applications with large or complex data models, especially those who need type safety, multi-database support, and maintainable schema management.
Developers choose Ent for its statically typed, code-first approach that reduces boilerplate, its support for multiple database backends, and its powerful graph traversal capabilities—all while keeping the API simple and explicit.
An entity framework for Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Generates a 100% statically typed API from your schema, ensuring compile-time error checking and reducing runtime bugs, as highlighted in the README's 'Statically Typed And Explicit API' feature.
Supports MySQL, PostgreSQL, SQLite, and even Gremlin for graph databases, providing flexibility across SQL and NoSQL backends, per the 'Multi Storage Driver' section.
Enables easy querying and traversal of graph structures with a fluent API, ideal for applications with complex relationships, as described in 'Easily Traverse Any Graph'.
Models database schemas as Go objects using a declarative API, promoting version control and maintainable schema management, core to the 'Schema As Code' philosophy.
Requires running the ent CLI tool to regenerate code after schema changes, adding steps to the build process and potentially slowing development iterations.
The code-first approach and graph concepts can be complex for developers new to entity frameworks, despite the README's emphasis on simplicity.
While Ent handles schema definition, database migrations often need external tools like Atlas or manual SQL, which isn't fully addressed in the core README.