What Is an ORM? Object-Relational Mapping Explained
An ORM maps database tables to programming objects. Learn how to use ORMs with your OpenClaw app's database.
An Object-Relational Mapping (ORM) library provides an abstraction layer between your application code and raw SQL. Instead of writing SELECT * FROM users WHERE id = 1, you call users.find(1) in your language's idiom.
Popular ORMs by Language
- JavaScript/TypeScript: Prisma, Drizzle ORM, TypeORM, Sequelize
- Python: SQLAlchemy, Django ORM, Peewee
- Go: GORM, sqlx (raw SQL with struct mapping)
- Ruby: ActiveRecord (Rails built-in)
Using an ORM with OpenClaw
If your OpenClaw app connects to a database, wire in your ORM. For example, with Prisma:
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
const deployments = await prisma.deployments.findMany()
ORMs vs Raw SQL
ORMs offer productivity, safety (parameterized queries prevent SQL injection), and schema migrations. They can be slower for complex queries and may generate suboptimal SQL. Use ORMs for CRUD-heavy work; drop to raw SQL for analytical queries.
Drizzle ORM in This Project
EZClaw uses Drizzle ORM with Neon PostgreSQL. See lib/db/schema.ts for the schema definition.