finds.dev← search

// the find

go-gorm/gorm

★ 39,823 · Go · MIT · updated Jun 2026

The fantastic ORM library for Golang, aims to be developer friendly

GORM is the dominant ORM for Go, handling the full range of SQL operations through struct tags and a chainable API. It targets Go developers who want ActiveRecord-style convenience without writing raw SQL for every query. If you're building a Go web app with a relational database, this is probably what you'll reach for first.

The association handling is genuinely good — preloading, eager loading via joins, and many-to-many all work without much ceremony. Hooks (BeforeCreate, AfterSave, etc.) integrate cleanly and don't require implementing heavy interfaces. The prepared statement cache and DryRun mode are practical features that actually matter in production. Test coverage is extensive and runs against real databases via compose, not mocks.

The 'developer friendly' philosophy means the API accepts almost anything and fails at runtime rather than compile time — a typo in a field name or a wrong struct tag silently produces bad SQL. Update behavior with zero values is a long-standing footgun: db.Save(&user) where a field is 0 or false will zero it out in the DB unless you use Select or map explicitly. Auto-migrations are table-stakes for development but production migrations need external tooling (Atlas, golang-migrate) since GORM can add columns but won't safely drop or alter them. The generic API added in recent versions helps somewhat but the core chainable API still returns *gorm.DB everywhere, which means errors accumulate silently until you call a finisher.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →