- Prisma if you want a full ORM and the fastest path to application models
- Drizzle if you want SQL-shaped TypeScript with less abstraction
pgif you want a plain PostgreSQL client and no ORM at all
Which path fits your app
| Path | Best when | What you get | Tradeoff |
|---|---|---|---|
| Prisma | You want the most guided ORM workflow | Schema modeling, generated client, fast CRUD setup | More abstraction and generated code |
| Drizzle | You want typed SQL and lighter tooling | SQL-first schema, typed queries, straightforward migrations | Slightly more hands-on than Prisma |
pg | You want the thinnest possible layer | Direct SQL, minimal dependencies, full control | You own schema and query ergonomics yourself |
Recommended default
For most small teams, Prisma is still the easiest first guide because it makes the end-to-end path obvious quickly. Drizzle should be the second guide, not an afterthought. It is the clearest alternative for teams that want stronger SQL ownership without dropping type safety. Plainpg should exist too because some teams do not want an ORM at all. That guide also becomes the clean reference for cron jobs, route handlers, and internal tools that just need SQL.
DBHost-specific fit
All three paths use the same DBHost building blocks:- one PostgreSQL database
- one pooled connection string on port
6432 - one place to manage passwords and backups
- one dashboard, CLI, and API when the app later needs automation
Guides
Prisma
Use Prisma when you want the fastest full-ORM path from schema to query.
Drizzle
Use Drizzle when you want a lighter SQL-first TypeScript workflow.
pg
Use node-postgres when you want direct SQL without an ORM layer.
What to add after these
If you keep expanding this section, the highest-value next docs are:Kyselyfor teams that want a typed query builder without full ORM modelingNode.js + pgoutside Next.js for workers, scripts, and background jobspostgres.jsonly if you start seeing real demand for that driver specifically
Next steps
- Start with the guide that matches your current stack preferences.
- Keep database queries in Server Components, route handlers, or server actions.
- Use the same pooled DBHost URL across local development and deployment unless your migration workflow needs something different.