ORM là layer ánh xạ database tables thành objects trong code, cho phép thao tác database bằng programming language thay vì SQL.
- Hai patterns chính: Active Record (model tự chứa DB logic, ví dụ Rails, Sequelize) và Data Mapper (tách domain object khỏi DB logic, ví dụ TypeORM DataMapper mode, Prisma).
- Lợi ích: type-safety, migration management (version-controlled schema changes), database abstraction (switch DB dễ hơn), boilerplate reduction.
- Nhược điểm: abstraction leaky — ORM generate SQL không optimal, ví dụ Prisma đôi khi tạo subquery thay vì JOIN hiệu quả hơn; N+1 query problem nếu không cẩn thận; khó debug khi cần hiểu SQL được generate; overhead runtime.
- Raw query escape hatch quan trọng: Prisma có $queryRaw, Sequelize có sequelize.query() — nên dùng cho queries phức tạp cần kiểm soát.
- Migration management: Prisma Migrate, Flyway, Liquibase giúp track và apply schema changes theo đúng thứ tự.