rads-db
v3.0.75
Published
Say goodbye to boilerplate code and hello to efficient and elegant syntax.
Downloads
633
Readme
Contributing guide
- Clone project
pnpm dev
- Add tests
- Fix tests
Introduction
When you work with the databases
What is ORM?
ORM is acronym for “Object Relational Mapping”. It is a library that helps developers to work with the database without leaving comfort of their programming language.
In other words, if your database is e.g. SQL, instead of writing raw sql queries and parsing results, you can functions provided by ORM library for your programming language (e.g. Typescript).
// Without ORM:
const data = db.query("select * from users where login like '%admin%'")
// With ORM:
const data = orm.users.get({ where: { login_contains: 'admin' } })
Popular ORMs:
- Entity Framework (C#/.net)
- ServiceStack.OrmLite (C#/.net)
- Hibernate (Java)
- Prisma (TS)
- Drizzle (TS)
- TypeORM (TS)
- MikroORM (TS)
- Sequelize (TS)
Here is a good article from Prisma providing detailed overview of how ORMs work.
What are the downsides of using ORM?
ORM hides database complexity from the developer, but that has a price.
- “Simple” ORMs (e.g. Prisma) quickly encounter limitations - e.g. sql queries that cannot be represented by ORM.
- “Complex” ORMs that try to support full set of features (e.g. Entity Framework) add their own complexity and introduce mental load on top of managing SQL
Consensus among the developer community is to use “simple” ORM, and use raw queries when ORM capabilities is not enough.
Ok, ORMs are useful. Why create new one?
We wanted to have features that are not supported in current ORMs:
- This article gives good overview