GORM is one of the most popular Object Relational Mappers for Go. It provides a clean, expressive API for interacting with databases, abstracting away much of the boilerplate SQL code while still allowing fine-tuned control when needed.
Getting Started
To start using GORM, first install the library:
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite # or another driver like mysql/postgres
Then, set up a simple connection:
import (
"gorm.io/gorm"
"gorm.io/driver/sqlite"
)
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
Defining Models
You define your data structures as Go structs. GORM uses reflection to map these to database tables:
type User struct {
gorm.Model
Name string
Email string
}
Basic Operations
Create:
db.Create(&User{Name: "Alice", Email: "alice@example.com"})
Read:
var user User
db.First(&user, 1) // find user with ID 1
db.Where("name = ?", "Alice").First(&user)
Update:
db.Model(&user).Update("Email", "new@example.com")
Delete:
db.Delete(&user)
Why Use GORM?
- Productivity: Less boilerplate, cleaner code.
- Portability: Works with multiple databases.
- Flexibility: Lets you drop down to raw SQL when needed.
Downsides
- Slightly larger binary size.
- May not be the fastest for high-performance use cases — consider raw SQL or sqlx if needed.
Conclusion
GORM is a great tool for building Go applications that need reliable database interaction with minimal friction. It’s especially useful for rapid development, small to medium-sized apps, and teams looking for readability over raw performance.
Top comments (2)
Great!
Thank you!